模式也与连字符匹配

2023-12-11

我有一段像这样的 Perl 代码(模式匹配),

$var = "<AT>this is an at command</AT>";

if ($var =~ /<AT>([\s\w]*)<\/AT>/i)
{
    print "Matched in AT command\n";
    print "$var\n\n";
}

如果标签之间的内容没有连字符,则效果很好。如果在标签之间的字符串之间插入连字符,则它不起作用,如下所示......<AT>this is an at-command</AT>.

即使还插入了连字符,任何人都可以修复此正则表达式以匹配吗?

请帮助我

Senthil


关于角色类别

您的模式包含此子模式:

[\s\w]*

The […] is a 字符类。就像是[aeiou]匹配任意小写元音之一。[^…] is a negated字符类。[^aeiou]匹配其中之一除了小写元音。

\s是空白字符类的简写;\w对于单词字符类。两者都不包含连字符。

The *是零个或多个重复说明符。

现在您应该明白为什么此模式不匹配连字符:它匹配零个或多个空格或单词字符。如果您想匹配连字符,则可以将其包含到字符类中。

[\s\w-]*

例如,如果您还想包含句号、问号和感叹号,那么您也可以简单地添加它们:

[\s\w.!?-]*

关于连字符的特别说明

要小心当在字符类中包含连字符时。它在字符类定义中用作正则表达式元字符来定义字符范围。例如,

[a-z]

匹配范围内的任何字符之一'a' and 'z', 包括的。相比之下,

[az-]

恰好匹配 3 个字符之一,'a', 'z', and '-'。当你把-作为字符类中的最后一个元素,它成为文字连字符而不是范围定义。您也可以将其作为first元素,或转义它(通过在前面加上反斜杠,这也是转义所有其他正则表达式元字符的方式)。

也就是说,以下 3 个字符类是相同的:

[az-]         [-az]         [a\-z]

相关问题

  • 正则表达式:为什么不呢[01-12]范围按预期工作吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模式也与连字符匹配 的相关文章

  • 正则表达式:如何像 DOM 渲染器一样删除额外的空格/换行符(处理)

    我想从 HTML 标记中 去除 所有 某种程度上 不必要的空格 Obj Render 对于这样的nodeValue 这个解决方案 https stackoverflow com a 2898231 294619工作得很好 但是 当有不间断空
  • 正则表达式exec函数不能多次工作[重复]

    这个问题在这里已经有答案了 var ts 00 00 06 705 var regularExpression 0 9 0 9 2 0 9 2 0 9 3 g var parsedTs1 regularExpression exec ts
  • Redshift 提取两个模式之间的字符串 (regexp_substr)

    我正在尝试提取以下文本deviceSerialNumber 发生这种情况直到 或字符串的末尾 数据看起来像 someddata somedataagain deviceSerialNumber device12345 anotherFiel
  • 在 R 中分割并提取字符串的一部分(在“.”和数字之间)

    我有一个字符变量 companies 观察结果如下 612 Grt Am Mgt Inv 7 33 77 威克斯4 61 265 王实验室8 75 9 CrossLand 节省 6 32 228 JPS纺织集团2 00 我试图将这些字符串分
  • 一位或两位数字正则表达式

    我有下面的代码 仅当我有 2 位数字时它才有效 如果我有 1 位数字则不起作用 我想在两种情况下工作 一位或两位数 var numberRegex 1 9 0 9 我尝试过类似的方法 但不幸的是不起作用 var numberRegex 1
  • 在这些情况下限制破折号的正则表达式模式

    Scenario 我正在使用第三方文件重命名软件 该软件是用 Delphi 编写的 并且具有 pascal 脚本支持 该应用程序允许使用正则表达式来重命名文件 这意味着 如果我需要对文件名执行的操作不能仅使用一个正则表达式来完成 那么我可以
  • perl 中的大写重音字符

    有没有办法在perl中大写重音字符 my string l phant print uc string 这样它实际上会打印 L PHANT 我的 perl 脚本以 ISO 8859 1 编码 string 以相同编码打印在 xml 文件中
  • 如何在 python 2.7 中使用 re.UNICODE?

    我正在尝试使用 re UNICODE 标志来匹配可能包含 unicode 字符的字符串 但它似乎不起作用 例如 Python 2 7 12 default Dec 4 2017 14 50 18 GCC 5 4 0 20160609 on
  • 在android上使用正则表达式验证字符串

    我希望我的字符串不包含 and 我用这个代码 private static boolean IsMatch String s String pattern try Pattern patt Pattern compile pattern M
  • 如何在 Perl 中生成数组的所有排列?

    生成所有内容的最佳 优雅 简单 高效 方式是什么 n perl 中数组的排列 例如 如果我有一个数组 arr 0 1 2 我想输出所有排列 0 1 2 0 2 1 1 0 2 1 2 0 2 0 1 2 1 0 它可能应该是一个返回迭代器的
  • 检测 UTF-8 编码文本文件中的损坏字符

    我有一个使用错误的字符编码编辑的文本文件 因此当我使用 UTF 8 打开它时 某些字符串中有一些 mojibake 和损坏的字符 哪种脚本语言能够最有效地检测这些损坏的字符 Perl 不是一个选择 我基本上试图找到一种使用脚本扫描文本文件并
  • 删除重复字符

    我如何删除重复字符 例如删除字母k in cakkkke让它成为cake 执行此操作的一种简单方法是循环遍历字符串的每个字符 如果该字符不是前一个字符的重复 则将字符串的每个字符附加到新字符串 下面是一些可以执行此操作的代码 newStri
  • 如何将正则表达式捕获组与 JFlex 结合使用?

    虽然这个问题是关于 JFlex 的 但它可能也适用于其他扫描仪生成器 例如 lex flex 如果我有一些规则 如何在该规则的一部分中创建一个捕获组 并使用该捕获组的结果作为在规则匹配时调用的代码的参数 例如 假设我有一个匹配 SGML 标
  • “read”和“sysread”有什么区别?

    read http perldoc perl org functions read html and sysread http perldoc perl org functions sysread html有非常相似的文档 两者有何区别 A
  • 在R中提取其他两个字符串之间的字符串

    我试图找到一种简单的方法来提取出现在两个已知子字符串之间的未知子字符串 可以是任何内容 例如 我有一个字符串 a lt anything goes here STR1 GET ME STR2 anything goes here 我需要提取
  • 为什么在线解析器似乎停在正则表达式处?

    我一直想知道为什么似乎没有任何解析器 比如说 BNF http en wikipedia org wiki Backus E2 80 93Naur Form 其行为类似于各种库中的正则表达式 当然 还有类似的事情ANTLR http www
  • 如何仅替换多个文件中记事本++中的第一个文本实例?

    我正在努力更新一个网站并进行一些更改 并且我已经成功使用标准查找和替换搜索对多个文件进行了大部分更改 我的 f r 中只留下一个错误需要修复 但它在整个文档中出现了几次 我只想替换第一个实例 这是唯一一次错误 div class boxb
  • 为什么 "asdf".replace(/.*/g, "x") == "xx" ?

    我偶然发现了一个令人惊讶的 对我来说 事实 console log asdf replace g x Why two替代品 似乎任何没有换行符的非空字符串都会产生此模式的两个替换 使用替换函数 我可以看到第一个替换是整个字符串 第二个替换是
  • 删除 .htaccess 中 URL 中各处的多组斜杠

    我目前有一个网站 访客可以访问每个网址 并使用任意数量的斜杠来分隔文件夹名称 例如 如果 URL 应该是 http example com one two three four 然后用户可以通过以下任意方式访问同一页面 http examp
  • 使用正则表达式匹配阿拉伯文文本

    我试图使用正则表达式仅匹配阿拉伯语文本 但出现异常 这是我的代码 txt matches P Arabic 这是例外情况 线程 main 中的异常 java util regex PatternSyntaxException 索引 9 附近

随机推荐