我正在尝试构建一个正则表达式,如果匹配则将丢弃该字符串。
案例研究:如果字符串以文字方括号[]
我尝试阅读网络上的多篇文章以解决该问题,并制作了一个对我有效的正则表达式
我有以下一段:
[Hello] How are you
Doing
Hope you have a nice day!
[goodbye] cya
Take care
我正在使用的正则表达式为/^(?!\[.?\])/
答案 0 :(得分:1)
^[^\[.?\]]
模式在这里是错误的模式,因为模式序列包含在字符类中。 ^[^\[.?\]]
在字符串的开头匹配除[
,.
,?
,]
以外的任何字符。您需要匹配以字符序列[
开头的任何行,然后匹配不超过]
的任意数量的字符。
要匹配Ruby中不以[...]
子字符串开头的行,您可以使用
^(?!\[[^\]\[]*]).*
^(?!\[.*?]).*
请参见Rubular demo和the latter regex graph:
详细信息
^
-一行的开头(?!\[.*?])
-如果在紧靠右边的[
处,除换行符以外的任何0+个字符(可能的行数)最少,然后]
,则负匹配项将使匹配失败(请注意,[^\]\[]*
匹配除[
和]
以外的0+个字符,如果{{1}之间不能有[
和]
,则可能更可取})[...]
-除换行符以外的任何0+字符。