多个组的正则表达式以任何顺序各有一个多重性
Regex of multiple group in any order each of one multiplicity
我正在尝试匹配
中的字符串
- 应该有
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/
时它不会失败。
正则表达式 ^(front/.*back/.*|back/.*front/.*)$
匹配:
front/
,然后是任何东西,然后 back/
,然后是任何东西;或
back/
,然后是任何东西,然后是 front/
,然后是任何东西。
^
和 $
意味着正则表达式必须匹配整个字符串,而不仅仅是它的一部分。您可以根据需要使用括号添加捕获组,例如如果你想要 "anything"s 它可能看起来像这样:
^(front/(.*)back/(.*)|back/(.*)front/(.*))$
第 1 组将始终匹配整个字符串; front/
之后的部分将属于第 2 组或第 5 组,back/
之后的部分将属于第 3 组或第 4 组。
我正在尝试匹配
中的字符串- 应该有
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/
时它不会失败。
正则表达式 ^(front/.*back/.*|back/.*front/.*)$
匹配:
front/
,然后是任何东西,然后back/
,然后是任何东西;或back/
,然后是任何东西,然后是front/
,然后是任何东西。
^
和 $
意味着正则表达式必须匹配整个字符串,而不仅仅是它的一部分。您可以根据需要使用括号添加捕获组,例如如果你想要 "anything"s 它可能看起来像这样:
^(front/(.*)back/(.*)|back/(.*)front/(.*))$
第 1 组将始终匹配整个字符串; front/
之后的部分将属于第 2 组或第 5 组,back/
之后的部分将属于第 3 组或第 4 组。