Java 正则表达式中的逻辑或
我想使用java正则表达式测试以下情况:Java 正则表达式中的逻辑或,java,regex,Java,Regex,我想使用java正则表达式测试以下情况: AB->允许 AC->允许 ABC->允许 A->禁止 以下是A、B和C正则表达式: 答:([0-9]{1,3})(\[0-9]{1,3}) B:(\+([0-1](\.[0-9]{1,3})) C:([0-1](\[0-9]{1,3})) 那么,如何使用逻辑OR创建正则表达式呢 解决方案 ^(([0-9]{1,3})(\.[0-9]{1,3})?)([-+]([0-1](\.[0-9]{1,3}))|(\+([0-1](\.[0-9]{1,3}
- AB->允许
- AC->允许
- ABC->允许
- A->禁止
- 答:
([0-9]{1,3})(\[0-9]{1,3})
- B:
(\+([0-1](\.[0-9]{1,3}))
- C:
([0-1](\[0-9]{1,3}))
^(([0-9]{1,3})(\.[0-9]{1,3})?)([-+]([0-1](\.[0-9]{1,3}))|(\+([0-1](\.[0-9]{1,3}))(\-([0-1](\.[0-9]{1,3})))))$
几种解决方案:
AB | AC | ABC
A(BC?C)
或A(B?C?B)
您可以将
B
和C
正则表达式与+
和-
放在字符类中组合,并使用以下正则表达式:
^(([0-9]{1,3})(\.[0-9]{1,3})?)([-+]([0-1](\.[0-9]{1,3}))|(\+([0-1](\.[0-9]{1,3}))(\-([0-1](\.[0-9]{1,3})))))$
在这种情况下,总是有A
,之后是B
或C
或BC
说明:
您的正则表达式将是AB
或AC
或ABC
,因此在A
之后,您希望B
或C
或BC
可以在字符类中创建B
或C
:
([-+]([0-1](\.[0-9]{1,3}))
然后使用pip(|
)作为前面选项和BC
之间的逻辑or,即:
(\+([0-1](\.[0-9]{1,3}))(\-([0-1](\.[0-9]{1,3}))
使用由
|运算符分隔的三个模式。要匹配AB
或AC
,只需将B
或C
放在非捕获组中,两个模式都由交替运算符分隔
(([0-9]{1,3})(\.[0-9]{1,3})?)(\+([0-1](\.[0-9]{1,3}))(-([0-1](\.[0-9]{1,3}))|(([0-9]{1,3})(\.[0-9]{1,3})?)(?:(\+([0-1](\.[0-9]{1,3}))|(-([0-1](\.[0-9]{1,3})))
|<-----------------------------------ABC----------------------------------->|<------------AB or AC----------------------------------------------------------->
([0-9]{1,3})(\.[0-9]{1,3})(\+([0-1](\.[0-9]{1,3})([0-1](\.[0-9]{1,3});([0-9]{1,3})(\.[0-9]{1,3})(?:(\+([0-1](\.[0-9]{1,3})(\.[0-9]{1,3})1})
||
当字符串同时使用+is first-is时,顺序很重要second@Athanor因此,如果你觉得这个答案很有用,你可以通过投票和接受答案来告诉社区;)我正在测试,你会尽快得到反馈(我有括号问题…)你的解决方案有效,下面是缺少括号的正则表达式:^(([0-9]{1,3})(\.[0-9]{1,3})([-+]([0-1](\.[0-9]{1,3})))(\+([0-1](\.[0-9]{1,3}))(\-([0-1](\.[0-9]{1,3}])$