在正则表达式/eclipse 搜索中查找不包含双正斜杠的行
find lines not containing double forward slash in regex / eclipse search
在 Eclipse 中搜索仅包含 'foo' 的未注释行时,我也收到了注释行。
找不到:
// foo
// foobar
// foo
// foobar
// // foobar
bar // foobar
待发现:
foo
/ foobar
bar foo
foobar
我尝试否定前瞻/后视和转义/未转义正斜杠
以下都没有在全局搜索中工作,即它们都还 return // lines
^.*(?!//).*foo.*$
^.*(?<!\/\/).*foo.*$
是否有匹配这些行的有效正则表达式?
Casimir et Hippolyte 的建议很有效:
^(?:(?!//).)*?foo.*
用于在 eclipse 中替换(即将行设置为注释)我使用
搜索
search : (^(?:(?!//).)*?foo.*)
replace : //
您可以使用
^([^/\n]*(?:/(?!/)[^/\n]*)*?foo.*)
并替换为 //
。参见regex demo。
这与
基本相同的模式 (demo)
^((?:(?!//).)*?foo.*)
但展开以获得更好的性能。
看看这些模式是如何工作的:
^((?:(?!//).)*?foo.*)
将字符串的开头与 ^
匹配,然后是除换行符字符 (.
) 之外的任何字符,它不会启动 //
字符序列((?!//)
) 重复 0 次或更多次,但次数尽可能少(由于 *?
),然后匹配 foo
并且 .*
匹配字符串的其余部分
^([^/\n]*(?:/(?!/)[^/\n]*)*?foo.*)
也匹配字符串的开头,然后 [^/\n]*
匹配除 /
和换行符之外的 0 个或多个字符(使用 [^/\n]*
,留在同一行),然后 (?:/(?!/)[^/\n]*)*?
匹配 0 次或多次重复的 /
序列,后面没有跟另一个 /
(参见 /(?!/)
),然后匹配 0 次或多次重复以外的字符/
和换行符,然后 foo
和行的其余部分与 foo.*
. 匹配
在 Eclipse 中搜索仅包含 'foo' 的未注释行时,我也收到了注释行。
找不到:
// foo
// foobar
// foo
// foobar
// // foobar
bar // foobar
待发现:
foo
/ foobar
bar foo
foobar
我尝试否定前瞻/后视和转义/未转义正斜杠 以下都没有在全局搜索中工作,即它们都还 return // lines
^.*(?!//).*foo.*$
^.*(?<!\/\/).*foo.*$
是否有匹配这些行的有效正则表达式?
Casimir et Hippolyte 的建议很有效:
^(?:(?!//).)*?foo.*
用于在 eclipse 中替换(即将行设置为注释)我使用 搜索
search : (^(?:(?!//).)*?foo.*)
replace : //
您可以使用
^([^/\n]*(?:/(?!/)[^/\n]*)*?foo.*)
并替换为 //
。参见regex demo。
这与
基本相同的模式 (demo)^((?:(?!//).)*?foo.*)
但展开以获得更好的性能。
看看这些模式是如何工作的:
^((?:(?!//).)*?foo.*)
将字符串的开头与^
匹配,然后是除换行符字符 (.
) 之外的任何字符,它不会启动//
字符序列((?!//)
) 重复 0 次或更多次,但次数尽可能少(由于*?
),然后匹配foo
并且.*
匹配字符串的其余部分^([^/\n]*(?:/(?!/)[^/\n]*)*?foo.*)
也匹配字符串的开头,然后[^/\n]*
匹配除/
和换行符之外的 0 个或多个字符(使用[^/\n]*
,留在同一行),然后(?:/(?!/)[^/\n]*)*?
匹配 0 次或多次重复的/
序列,后面没有跟另一个/
(参见/(?!/)
),然后匹配 0 次或多次重复以外的字符/
和换行符,然后foo
和行的其余部分与foo.*
. 匹配