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

示例:
假设序列'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 regex匹配由空格或字符串末尾/开头的单词?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13225860/

10-12 18:09