正则表达式:将语句与或运算符组合

时间:2015-06-24 16:05:33

标签: regex boolean-logic

我需要一个大致结合了

逻辑的正则表达式

[1-9] [0-9]的 + \ S + X | X

X | X + \ S * + [1-9] [0-9] *

或者用英语:匹配字母X(大写或未大写)的模式,前面是整数(单个空格可选) OR 成一个整数(单个空格可选)

感谢。

P.S。上面两个单独的正则表达式只是为了说明;实际上没有测试过它们。

4 个答案:

答案 0 :(得分:1)

这完全符合您的要求:

(\d\s?[xX]{1}|[xX]{1}\s?\d)

Example

请参阅http://regexr.com/

可能不是best regex

答案 1 :(得分:1)

您说single space optional因此我使用了\s?。如果您可以有任意数量的空格,请将\s替换为\s*尝试使用此字段:

\d+\s?(X|x)|\s?\d+

DEMO

答案 2 :(得分:1)

这将适用于您的请求: 的 ((X|x)\s*\d+)|(\d+\s*(X|x))

说明:

(
  (X|x) First character must be an 'X' or 'x'
   \s*  Second character can be zero or infinite amount of spaces 
   \d+  Third character has to be one or more digits
)
|  or
(
  \d+   First character has to be one or more digits
  \s*   Second character can be zero or infinite amount of spaces
  (X|x) Third character must be an 'X' or 'x'
)

答案 3 :(得分:1)

你快到了,你需要用括号括起来作为一个捕获组进行分组,并处理2位以外的数字。

X9847 
X 2645
4442 x
x 525521
5254X5541
221 X 266

将其粘贴到Advantage of switch over if-else statement进行试用。我测试了它:

.foo.bar