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

Is there a better way to write a Regex to match the case,

我正在尝试构建一个正则表达式,它会在匹配时丢弃该字符串。

案例研究:丢弃以文字方括号开头的字符串 []

我已经尝试阅读网上的多篇文章来解决这个问题,并制作了一个真正适合我的正则表达式

我有以下段落:

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

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

结果符合预期,我想知道有没有更好的匹配方式?

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

的任意数量的字符

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

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

参见 Rubular demo and the latter regex graph:

详情

  • ^ - 行首
  • (?!\[.*?]) - 如果立即在右边有 [,则匹配失败的否定前瞻,除换行符之外的任何 0+ 个字符尽可能少,然后是 ](注意 [^\]\[]* 匹配除 [] 以外的 0+ 个字符,如果 [] 之间不能有任何 [] 19=])
  • .* - 除换行符以外的任何 0+ 个字符。