为什么这个正则表达式只忽略元音?

问题描述 投票:-1回答:2

我的问题是这个正则表达式的逻辑是什么,所以它不能从单词中选择元音?

这是正则表达式:

^[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的哪一部分否定了名词的选择”

regex expression
2个回答
1
投票

你的正则表达式不会否定名词的选择,而只是简单地根据元音进行匹配。

具体来说,正则表达式运行OR|)条件,检查三个部分中的任何一个:

  • ^[AEIOUaeiou]+ - 检查字符串是否以一个或多个元音开头
  • [AEIOUaeiou]+$ - 检查字符串是否以一个或多个元音结尾
  • [^AEIOUaeiou] - 检查字符串是否包含不是元音的东西

它基本上是说如果字符串在开头或结尾包含元音,它将返回匹配...如果字符串包含除元音之外的任何内容(包括特殊字符),也将返回匹配。


0
投票

你的正则表达式匹配:

^                     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开头,结束于.

© www.soinside.com 2019 - 2024. All rights reserved.