我.*?[a-z]([a-z])([a-z])([a-z]).*?(\s+)(\d+)
从一些在线生成器中获得了这种模式,但它不起作用。
我需要允许的模式:
“最少 3 个字符长度的字符串、下一个空格和下一个最少 1 个字符的整数”[abc 1] 或相同但顺序不同的“最少 1 个字符的整数、下一个空格和下一个最少 3 个字符长度的字符串”[3 gtf ]。
谢谢。
我.*?[a-z]([a-z])([a-z])([a-z]).*?(\s+)(\d+)
从一些在线生成器中获得了这种模式,但它不起作用。
我需要允许的模式:
“最少 3 个字符长度的字符串、下一个空格和下一个最少 1 个字符的整数”[abc 1] 或相同但顺序不同的“最少 1 个字符的整数、下一个空格和下一个最少 3 个字符长度的字符串”[3 gtf ]。
谢谢。
以下表达式应该符合您的描述:
[a-z]{3,}\s\d+|\d+\s[a-z]{3,}
一些注意事项:
该{3,}
构造允许您指定给定范围内的重复。一般来说,它是{min,max}
,但您可以省略 min 或(如这里) max 以获得开放式范围。您还可以通过指定单个数字来指定准确的重复次数,例如{99}
.
该表达式本质上是两个交替切换的完整表达式。正则表达式不允许你说“正是这些事情,以任何顺序”。
我曾经[a-z]
匹配非数字部分中的字符,因为这是您在原始示例中所做的。
试试这个:
\d+\s\w{3,}|\w{3,}\s\d+
它要么匹配:
\d+
),后跟一个空格 ( \s
),后跟三个或多个单词字符 ( \w{3,}
)(这是 [a-zA-Z0-9],您可以将此部分替换为 [a-zA-Z]如果你愿意)。