我想找到与我的正则表达式匹配的序列,如果它们位于由空格包围的字符串的中间,结尾或开头,或者是字符串中唯一的内容。
示例:
让我们假设序列 '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/