我是正则表达式的新手。我正在寻找一个表达式,它将返回符合以下条件的结果:
我希望它能返回如下的短语:
'因此 a 飓风将到达'和'然而我知道我像Michael Smith一样
每个单词之间应该有一个空格。
到目前为止,我有:
^([A-Za-z]{3,})*$( [A-Za-z])*$( [A-Za-z]{3,})*$
任何帮助将不胜感激。它与间距有关吗?我正在使用名为“Oracle EDQ”的应用程序。
答案 0 :(得分:1)
在正常的正则表达式世界中,您使用\b
,一个单词边界。
^[a-zA-Z]{3,}(\s+|\b([a-zA-Z]|[a-zA-Z]{3,})\b)*\s+[a-zA-Z]{3,}$
^^ ^^
请参阅demo
也许,非捕获组(如anubhava所示)。
从我看到的,Oracle EDQ正则表达式语法(以及非捕获组)中没有单词边界。你应该依赖\s
模式,匹配空格。
因此,无论是
还是强制性的^[a-zA-Z]{3,}(\s+|\s([a-zA-Z]|[a-zA-Z]{3,}))*\s+[a-zA-Z]{3,}$
^^
OR
^[a-zA-Z]{3,}(\s+|([a-zA-Z]|[a-zA-Z]{3,})\s)*\s*[a-zA-Z]{3,}$
^^ ^
答案 1 :(得分:0)