regex 正则表达式-仅当零个或多个组匹配时才匹配尾随字符

5us2dqdw  于 2023-06-30  发布在  其他
关注(0)|答案(1)|浏览(75)

我不知道如何在零或多组不捕获任何内容的情况下不匹配正则表达式。
我的正则表达式我已经想出了现在^\.?([a-zA-Z0-9]*)_?(foobar)\.txt$
测试用例:

sometext_foobar.txt <- Should match and return 'sometext' in a group
_foobar.txt      <--- I want it to NOT match on this
.foobar.txt      <---- Works match group (foobar)
.bcd_foobar.txt  <---- Works match group (bcd) and (foobar)

基本上,如果([a-zA-Z0-9]*)不匹配,则不允许使用下划线。

7cwmlq89

7cwmlq891#

您可以编写匹配1+次[a-zA-Z 0 -9]+的模式,后跟一个下划线,并使整个部分可选。

^\.?([a-zA-Z0-9]+_)?(foobar)\.txt$

Regex demo
请注意,如果您只需要匹配,则有2个捕获组:

^\.?(?:[a-zA-Z0-9]+_)?foobar\.txt$

Regex demo

相关问题