有没有更好的方法来编写正则表达式来匹配大小写,
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+ 个字符。
我正在尝试构建一个正则表达式,它会在匹配时丢弃该字符串。
案例研究:丢弃以文字方括号开头的字符串 []
我已经尝试阅读网上的多篇文章来解决这个问题,并制作了一个真正适合我的正则表达式
我有以下段落:
[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+ 个字符。