pattern-matching 相关问题

使用此标记可以检验有关测试数据结构是否具有特定形状或在特定位置包含特定值的问题。许多函数语言提供模式匹配结构。此标记中的大多数问题也应该包含您正在编程的语言的标记。请勿使用此标记进行常规表达式问题,请使用[regex] INSTEAD;类似地,对于类似POSIX的shell中的模式匹配(globbing),请使用[glob]。

复合 if 语句和带有失败的开关中的模式匹配

如果我有一个像 if 那样的 if 语句(currentShape 是 ITable 表 || currentShape 是 AutoShape autoShape),我无法在正文中使用 table 或 autoShape,因为我收到 CS0165 编译器错误。 我也一样...

回答 2 投票 0

在更新中使用replace()函数来更改一列的多个子字符串

假设我有一个带有列名称的学生表。 此姓名列的值为“studenttone”、“studenttwo”、“student Three” & 我想用“student1”、“student2”、“student3”替换它们。 对于单身

回答 3 投票 0

正则表达式来匹配具有特定属性的 html 标签

我正在尝试匹配所有没有“term”或“range”属性的HTML标签 这是 HTML 格式示例 日期: 12/01/10 我正在尝试匹配所有没有“term”或“range”属性的 HTML 标签 这是示例 HTML 格式 <span class="inline prewrap strong">DATE:</span> 12/01/10 <span class="inline prewrap strong">MR:</span> 1234567 <span class="inline prewrap strong">DOB:</span> 12/01/65 <span class="inline prewrap strong">HISTORY OF PRESENT ILLNESS:</span> Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum <span class="inline prewrap strong">MEDICATIONS:</span> <span term="Advil" range="true">Advil </span>and Ibuprofen. 我的正则表达式是:<(.*?)((?!\bterm\b).)> 不幸的是,这匹配所有标签...如果内部文本不匹配,那就太好了,因为我需要过滤掉除具有该特定属性的标签之外的所有标签。 如果您喜欢正则表达式,那么这对我有用。 (注意 - 不包括过滤掉评论、文档类型和其他实体。 其他警告;标签可以嵌入脚本、评论和其他内容中。) span标签(w/ attr)没有术语|范围属性 '<span (?=\s) (?! (?:[^>"\']|(?>".*?"|\'.*?\'))*? (?<=\s) (?:term|range) \s*= ) \s+ (?:".*?"|\'.*?\'|[^>]*?)+ >' 任何标签(w/ attr)无术语|范围属性 '<[A-Za-z_:][\w:.-]* (?=\s) (?! (?:[^>"\']|(?>".*?"|\'.*?\'))*? (?<=\s) (?:term|range) \s*= ) \s+ (?:".*?"|\'.*?\'|[^>]*?)+ >' 任何标签(w/o attr)无术语|范围属性 '< (?: [A-Za-z_:][\w:.-]* (?=\s) (?! (?:[^>"\']|(?>".*?"|\'.*?\'))*? (?<=\s) (?:term|range) \s*= ) \s+ (?:".*?"|\'.*?\'|[^>]*?)+ | /?[A-Za-z_:][\w:.-]*\s*/? ) >' 更新 使用 (?>) 结构的替代方案 以下正则表达式适用于无“术语|范围”属性 标志 = (g)global 和 (s)dotall 带属性的跨度标签 链接:http://regexr.com?2vrjr 正则表达式:<span(?=\s)(?!(?:[^>"\']|"[^"]*"|\'[^\']*\')*?(?<=\s)(?:term|range)\s*=)(?!\s*/?>)\s+(?:".*?"|\'.*?\'|[^>]*?)+> 任何带有属性的标签 链接:http://regexr.com?2vrju 正则表达式:<[A-Za-z_:][\w:.-]*(?=\s)(?!(?:[^>"\']|"[^"]*"|\'[^\']*\')*?(?<=\s)(?:term|range)\s*=)(?!\s*/?>)\s+(?:".*?"|\'.*?\'|[^>]*?)+> 任何带有attr或wo/attr的标签 链接:http://regexr.com?2vrk1 正则表达式:<(?:[A-Za-z_:][\w:.-]*(?=\s)(?!(?:[^>"\']|"[^"]*"|\'[^\']*\')*?(?<=\s)(?:term|range)\s*=)(?!\s*/?>)\s+(?:".*?"|\'.*?\'|[^>]*?)+|/?[A-Za-z_:][\w:.-]*\s*/?)> '匹配除 term="occasionally" 之外的所有标签' 链接:http://regexr.com?2vrka <(?:[A-Za-z_:][\w:.-]*(?=\s)(?!(?:[^>"\']|"[^"]*"|\'[^\']*\')*?(?<=\s)term\s*=\s*(["'])\s*occasionally\s*\1)(?!\s*/?>)\s+(?:".*?"|\'.*?\'|[^>]*?)+|/?[A-Za-z_:][\w:.-]*\s*/?)> 我认为你应该使用 HTML 解析器来解决这个问题。创建自己的正则表达式是可能的,但肯定是错误的。想象一下你的代码包含这样的表达式 < span class = "a" >b< / span > 它也是有效的,但是考虑正则表达式中所有可能的空格和制表符并不容易,并且需要进行测试才能确保它按预期工作。 这将实现你想要的。它是为 Perl 程序编写的,格式可能会根据您使用的语言而有所不同 /(?! [^>]+ \b(?:item|range)= ) (<[a-z]+.*?>) /igx 下面的代码在 Perl 程序中演示了这种模式 use strict; use warnings; my $pattern = qr/ (?! [^>]+ \b(?:item|range)= ) (<[a-z]+.*?>) /ix; my $str = <<'END'; <span class="inline prewrap strong">DATE:</span> 12/01/10 <span class="inline prewrap strong">MR:</span> 1234567 <span class="inline prewrap strong">DOB:</span> 12/01/65 <span class="inline prewrap strong">HISTORY OF PRESENT ILLNESS:</span> Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum <span class="inline prewrap strong">MEDICATIONS:</span> <span term="Advil" range="true">Advil </span>and Ibuprofen. END print "$_\n" foreach $str =~ /$pattern/g; 输出 <span class="inline prewrap strong"> <span class="inline prewrap strong"> <span class="inline prewrap strong"> <span class="inline prewrap strong"> <span class="inline prewrap strong"> <\w+\s+(?!term).*?>(.*?)</.*?> 我认为这个正则表达式可以正常工作。 此正则表达式将选择任何 HTML 标签的样式属性。 <\s*\w*\s*style.*?> 您可以在 https://regex101.com 上查看

回答 5 投票 0

如何 grep -o 嵌套方括号和字符

我有一个字符串,下面存储在文件 aaa 中 333333444444aaa[aaa[[bb[b[ccc]zzz]xx[x]cc]]cc222222211111111 字符串中的左右方括号可能不匹配。所以我想 grep ...

回答 1 投票 0

如何在 Rust 中捕获捕获结果时将一个字符串与多个字符串匹配

这里是 Rust 新手,出于好奇,我试图遵循文档中的一些练习,想知道实现以下目标的“最佳”方法是什么: 给定一个正则表达式列表,如何...

回答 1 投票 0

Clojure 替代 Haskell 的 ADT 和模式匹配?

每当在 Haskell 中我们需要一些变体数据类型时,我们都会将 ADT 与模式匹配结合使用。 Clojure 人们在此类用例中使用什么?

回答 5 投票 0

PostgreSQL LIKE 子句中的正则表达式

我被一个简单的正则表达式困住了。不知道我错过了什么。对正则表达式技能有点生疏。 我试图匹配的表达式是: 从表中选择 *,其中值如“00[1-9]%” --(对...

回答 2 投票 0

Sed 脚本删除文件的前两行(如果它们为空)

我正在尝试编写一个相当简洁的 sed 脚本,仅当文件的前两行为空时才删除它们,因此以下文件: > 猫 myfile.in 3号线 5号线 会导致三升...

回答 8 投票 0

为什么 |模式匹配中的(管道)会导致“移动后使用的值”?

我对管道的语义有点困惑 |匹配臂中的操作员。具体来说,我有一些代码,其中使用管道似乎会导致移动后使用借用检查器错误。 这是一分钟...

回答 1 投票 0

为什么 | (管道)在 Rust 模式匹配中会导致“移动后使用的值”?

编辑:事实上这是我的 IDE 的问题,而不是我的代码的问题。具体来说,这是 RustRover 的借用检查器中的一个错误(在 2024.1 和 2024.2 EAP 中)。 误报: 在 Rust 中,我有点困惑

回答 1 投票 0

删除行中的所有空格,但不删除双引号之间的空格

示例: 输入= 这是带有一些空格的示例文本。 这应该是第二行。 然而,“引号之间的空格不应改变”。 最后一行。 输出=

回答 4 投票 0

与表达式进行模式匹配<Func<T, bool>>

考虑以下代码: 内部静态类程序 { 私有静态无效Main() { 对象值=“你好”; Console.WriteLine(value.Test(o => o 是字符串)...

回答 1 投票 0

匹配模式后打印特定行数

我必须在输入文件中每次出现表达式“AAA”后打印 81 行。我该怎么办?

回答 6 投票 0

使用 sed 将多行模式替换为文件内容

我有一个文件 certs.txt,其中包含具有多行模式的部分,例如 CAChain = [IIH1zCCBr+gAwIBAgISBPW9KTc3ma4BJ5Dwjsap3vuSMA0GCSqGSIb3DQEBCwUAMDMxCzAJ

回答 1 投票 0

Scala 中更好的匹配类型检查

scala> A 类 定义A类 scala> B 类 定义B类 scala> val a: A = 新 A a: A = A@551510e8 scala> 匹配 { | case _: B => println("不太可能") |案例 _ =>

回答 3 投票 0

Perl 正则表达式“计算括号内的空格数”:() 或双引号“”

我想计算里面存在的空白数量:() OR ""。 可以使用 perl 正则表达式来完成吗? 例子: 设字符串为: abcd(efg h i)jkl -> 计数 = 2 abc def(dfdsff fd)df...

回答 3 投票 0

如何在 Perl 中 grep 后提取匹配大括号之间的字符串?

我有一个以下文本格式的文件: 猫测试.txt “perl-测试::DNS”: [ { “环境”:“测试1”, “哈希”:“c8d149b4fc895b214276ca5c90d1181e”, ”

回答 2 投票 0

如何读取 Haskell 中二叉树中的内容?

我有以下类型: 数据树=分支(树)(树)| Leaf Int 推导(显示) 现在我想创建一个函数来给出树中最高值的叶子。但我被困住了,因为我不...

回答 2 投票 0

创建带有C优化错误的egrep命令克隆

我正在开发一个 C 程序,使用 KMP (Knuth-Morris-Pratt) 算法实现类似正则表达式的模式匹配。但是,我遇到了程序产生错误输出的问题...

回答 1 投票 0

使用saxon作为引擎转换XML时出现的问题

我有一个 xslt 将从这里获得的 RFC 列表转换为内部格式(也是 xml 格式)。 xslt 代码非常明显,它包含与......的前两个级别匹配的模板。

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.