有没有更好的方式编写正则表达式来匹配大小写,

时间:2019-05-30 18:49:23

标签: regex regex-negation

我正在尝试构建一个正则表达式,如果匹配则将丢弃该字符串。

案例研究:如果字符串以文字方括号[]

开头,则将其丢弃

我尝试阅读网络上的多篇文章以解决该问题,并制作了一个对我有效的正则表达式

我有以下一段:

[Hello] How are you
Doing
 Hope you have a nice day!
[goodbye] cya 
Take care

我正在使用的正则表达式为/^(?!\[.?\])/

结果符合预期,我想知道是否有更好的匹配方法? enter image description here

1 个答案:

答案 0 :(得分:1)

^[^\[.?\]]模式在这里是错误的模式,因为模式序列包含在字符类中。 ^[^\[.?\]]在字符串的开头匹配除[.?]以外的任何字符。您需要匹配以字符序列[开头的任何行,然后匹配不超过]的任意数量的字符。

要匹配Ruby中不以[...]子字符串开头的行,您可以使用

^(?!\[[^\]\[]*]).*
^(?!\[.*?]).*

请参见Rubular demothe latter regex graph

enter image description here

详细信息

  • ^-一行的开头
  • (?!\[.*?])-如果在紧靠右边的[处,除换行符以外的任何0+个字符(可能的行数)最少,然后],则负匹配项将使匹配失败(请注意,[^\]\[]*匹配除[]以外的0+个字符,如果{{1}之间不能有[],则可能更可取})
  • [...]-除换行符以外的任何0+字符。