regex - 如何使用Perl正则表达式匹配字符串末尾/开头的空格或空格包围的单词?

标签 regex perl

我想找到与我的正则表达式匹配的序列,如果它们位于由空格包围的字符串的中间,结尾或开头,或者是字符串中唯一的内容。

示例:
让我们假设序列 'qwe45rty'是我们正在寻找的。我希望能够对所有这些字符串产生积极影响:
'qwe45rty' 'qwe45rty blabla' 'smth qwe45rty blabla' 'smth qwe45rty' ' qwe45rty '
但这些都没有:
'aaqwe45rty' 'qwe45rtybb' 'aaqwe45rtybb'
我想出的最好的办法是这样的:

if ( ($a =~ /\s+$re\s+/) or
     ($a =~ /^$re\s+/)   or
     ($a =~ /\s+$re$/)   or
     ($a =~ /^$re$/)        )
{
    # do stuff
}

这不是最好的方法:)

有什么建议?

最佳答案

您可以在正则表达式中执行 或 :

/(^|\s+)qwe45rty(?=\s+|$)/
regex101
请注意,第二组是正向前瞻 ( ?= ),因此它会检查空格,但不会消耗它。这样,正则表达式可以匹配字符串的两次连续出现并给出准确的匹配计数。

关于regex - 如何使用Perl正则表达式匹配字符串末尾/开头的空格或空格包围的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13225860/

相关文章:

java - 如何用 "\\"分割字符串

PHP。替换字符串中的命名组

perl - 如何模拟 Perl 的内置反引号运算符?

perl - Perl 升级后出现奇怪的错误 : Unable to flush stdout

regex - sed linux 命令无法插入行

sql - 如何用匹配调用 regexp_replace 中的函数?

ios - 如何使用 Perl 开发 iPhone 应用程序?

c# - 自动检测机器的代码

java - Perl 到 Java 的翻译

javascript - 为什么正则表达式匹配的字符串表现得很奇怪?