我从某个在线生成器获得了这种模式.*?[a-z]([a-z])([a-z])([a-z]).*?(\s+)(\d+)
,但它无效。
我需要允许的模式:
“最小3个字符串长度字符串,下一个单个空格,以及下一个最小1个字符整数”[abc 1]或相同但以不同顺序“最小1个字符整数,下一个单个空格和下一个最小3个字符长度字符串” [3 gtf]。
感谢。
答案 0 :(得分:1)
试试这个:
previous()
它匹配:
\d+\s\w{3,}|\w{3,}\s\d+
),后跟一个空格(\d+
),后跟三个或更多字字符(\s
)(这是[a-zA- Z0-9],如果您愿意,可以用[a-zA-Z]替换此部分。答案 1 :(得分:1)
以下表达式应该按照您的描述进行:
[a-z]{3,}\s\d+|\d+\s[a-z]{3,}
一些注意事项:
{3,}
构造允许您指定给定范围内的重复。一般情况下,它是{min,max}
,但您可以忽略最小值或(如此处)最大值以具有开放范围。您还可以通过指定单个数字来指定确切的重复次数,例如{99}
。
表达式本质上是两个完整的表达式,用交替切换。正则表达式不允许您以任何顺序说出“完全符合这些内容”。
我使用[a-z]
来匹配非数字部分中的字符,因为这是您在原始示例中所做的。