首页 文章

正则表达式,匹配字符串中的子字符串

提问于
浏览
2

我想用这个正则表达式捕获一个字符串:

^([\d]_[a-z|A-Z]+_test)$

所以它会捕获类似的东西: 1_mytest_test

但是,如果字符串在另一个字符串中,如:

results.1_mytest_test.=fail, more info

没有比赛 .

我认为 ^$ 会划分我正在寻找的字符串的开头和结尾,对吧?

1 回答

  • 3

    您应该删除 ^ / $ 锚点,如果您不需要将文字 | 与正则表达式匹配,则在字符类中不需要 |

    \d_[a-zA-Z]+_test
    

    regex demo

    ^ 是字符串锚点的开头,而 $ 是字符串锚点的结尾,因此,它们是"anchor"在开始和结束时匹配的字符串 .

    对于 | ,字符类匹配单个字符 . [a-zA-Z] 匹配1个字母 . 此处不需要交替运算符 | ,因为它按字面意思处理(即 [a-zA-Z|] 将匹配输入字符串中的 | 符号) .

    仅供参考:在许多情况下,当您需要在较大的字符串中匹配某些内容时,您需要使用字边界 \b 来匹配整个单词:

    \b\d_[a-zA-Z]+_test\b
    

    但是,人们通常会在模式中使用非单词字符,然后通过环视更安全(不确定您的引擎支持后视,但这里有一个版本,例如,PCRE):

    (?<!\w)\d_[a-zA-Z]+_test(?!\w)
    

相关问题