我想用这个正则表达式捕获一个字符串:
^([\d]_[a-z|A-Z]+_test)$
所以它会捕获类似的东西: 1_mytest_test
1_mytest_test
但是,如果字符串在另一个字符串中,如:
results.1_mytest_test.=fail, more info
没有比赛 .
我认为 ^ 和 $ 会划分我正在寻找的字符串的开头和结尾,对吧?
^
$
您应该删除 ^ / $ 锚点,如果您不需要将文字 | 与正则表达式匹配,则在字符类中不需要 | :
|
\d_[a-zA-Z]+_test
见regex demo
^ 是字符串锚点的开头,而 $ 是字符串锚点的结尾,因此,它们是"anchor"在开始和结束时匹配的字符串 .
对于 | ,字符类匹配单个字符 . [a-zA-Z] 匹配1个字母 . 此处不需要交替运算符 | ,因为它按字面意思处理(即 [a-zA-Z|] 将匹配输入字符串中的 | 符号) .
[a-zA-Z]
[a-zA-Z|]
仅供参考:在许多情况下,当您需要在较大的字符串中匹配某些内容时,您需要使用字边界 \b 来匹配整个单词:
\b
\b\d_[a-zA-Z]+_test\b
但是,人们通常会在模式中使用非单词字符,然后通过环视更安全(不确定您的引擎支持后视,但这里有一个版本,例如,PCRE):
(?<!\w)\d_[a-zA-Z]+_test(?!\w)
1 回答
您应该删除
^
/$
锚点,如果您不需要将文字|
与正则表达式匹配,则在字符类中不需要|
:见regex demo
^
是字符串锚点的开头,而$
是字符串锚点的结尾,因此,它们是"anchor"在开始和结束时匹配的字符串 .对于
|
,字符类匹配单个字符 .[a-zA-Z]
匹配1个字母 . 此处不需要交替运算符|
,因为它按字面意思处理(即[a-zA-Z|]
将匹配输入字符串中的|
符号) .仅供参考:在许多情况下,当您需要在较大的字符串中匹配某些内容时,您需要使用字边界
\b
来匹配整个单词:但是,人们通常会在模式中使用非单词字符,然后通过环视更安全(不确定您的引擎支持后视,但这里有一个版本,例如,PCRE):