我想创建一个正则表达式,我在其中匹配单词:
我正在使用表达式:
\s*([a-zA-Z])[eyuioaEYUIOA]*([qwrtpsdfghjklzxcvbnmQWRTPSDFGHJKLZXCVBNM]?)[a-zA-Z]*([a-zA-Z])[-\?\.,\s+]
但是我不明白如何实现OR功能:在下面的文本中我失败了#34;现在","不是"正确。我的比赛是N_w,n_t,但他们应该是现在,而不是
现在这不是结束。这甚至还没开始结尾。但它可能是开始的结束。
我应该如何实现优先OR功能?
示例:
I am now this is the even beginning perhaps match keen vlk
所需的比赛
I am now ths is the evn bgg prs mth ken vlk
答案 0 :(得分:0)
对于这个正则表达式,我认为你必须使用一个conditionnal语句,一种方法是:\s*([a-zA-Z])(?(?=\S*?[qwrtpsdfghjklzxcvbnmQWRTPSDFGHJKLZXCVBNM]\S)(?:\S*?)([qwrtpsdfghjklzxcvbnmQWRTPSDFGHJKLZXCVBNM])|([eyuioaEYUIOA]))?[a-zA-Z]*?([a-zA-Z])[-\?\.,\s+]
在这个表达式中,第一个组是第一个字母,第二个是第一个字母,如果有的话是一个,它不是一个2字的字母,第三个是第一个元音,第四个是最后一个字母。第二个和第三个可以是空的。
您可以在http://regex101.com/r/yQ1aR3/2上查看。