我正在尝试在哪里匹配字符串
front/
和back/
至少包含一个非空白字符的大小写以下有效:
front/asd dsa back/qwe ewq
back/dsafront/asd
但不是以下内容:
asd front/asd back/qwe
front/asd back/asd front/asd
我在Java中尝试了以下方法:
^(?=(((?i)front/)|((?i)back/)))(?=.*front/\s*\S)(?=.*back/\s*\S)
但是当存在多个front/
或back/
时,它不会失败。
答案 0 :(得分:2)
正则表达式^(front/.*back/.*|back/.*front/.*)$
符合以下任一条件:
front/
,然后是其他任何内容,然后是back/
,然后是所有其他内容;或back/
,然后再输入任何内容,然后再输入front/
,再输入任何内容。 ^
和$
表示正则表达式必须匹配整个字符串,而不仅仅是部分字符串。您可以根据需要使用括号添加捕获组,例如如果您想要“任何东西”,它可能看起来像这样:
^(front/(.*)back/(.*)|back/(.*)front/(.*))$
第1组将始终匹配整个字符串; front/
之后的部分将在第2组或第5组中,而back/
之后的部分将在第3组或第4组中。