我的问题是这个正则表达式的逻辑是什么,所以它不能从单词中选择元音?
这是正则表达式:
^[AEIOUaeiou]+|[AEIOUaeiou]+$|[^AEIOUaeiou]
示范文本 :
我不得不为此叹息,并希望不可能的事情,直到她的父亲醒来,并使得必须开朗。他的精神需要支持。他是一个紧张的人,容易沮丧;喜欢他习惯的每一个身体,并且讨厌与他们分开;讨厌各种变化。婚姻,作为变革的起源,
正则表达式结果:
cld nt bt sgh vr t,nd wsh fr mpssbl thngs,tll hr fthr wk,nd md t ncssry t b> chrfl.Hs sprts rqrd spprt。 H ws nrvs mn,sly dprssd; fnd f vry bt tht ht wt sd tt,nd htng t prt thth; htng chng f vry knd。 Mtrmny,s rgn f chng
我的重点是“以上REGEX的哪一部分否定了名词的选择”
你的正则表达式不会否定名词的选择,而只是简单地根据元音进行匹配。
具体来说,正则表达式运行OR
(|
)条件,检查三个部分中的任何一个:
^[AEIOUaeiou]+
- 检查字符串是否以一个或多个元音开头[AEIOUaeiou]+$
- 检查字符串是否以一个或多个元音结尾[^AEIOUaeiou]
- 检查字符串是否包含不是元音的东西它基本上是说如果字符串在开头或结尾包含元音,它将返回匹配...如果字符串包含除元音之外的任何内容(包括特殊字符),也将返回匹配。
你的正则表达式匹配:
^ Start of line
[AEIOUaeiou]+ 1-n times any of the characters in []
| OR
[AEIOUaeiou]+ 1-n times any on the characters in []
$ End of line
| OR
[^AEIOUaeiou] 1 occurence of not any of those in []
regexr将是:https://regexr.com/3lm0k
基本上你得到了很多匹配(385)的最后一部分而没有匹配的第一部分,因为你的字符串以c
开头,结束于.