我有这样的字符串:
"
[2][n]
shutter; window shutter
,と|戸,1266970,(Y, 5, 3, Y, [1][n]
[restr=戸]
door (esp. Japanese-style)"
我正在尝试删除 [restr=戸]
使用这段代码:
Regex regex = new Regex(@"(\n )?\[(see|note|ant|restr|syn)=[^\]]*\]]");
var m1 = regex.Replace(m, "");
但是当我查看 m1 时,字符串仍然存在。
谁能看出它为什么不删除字符串?
您需要删除最后一个 ]
,因为它需要第二次关闭 ]
,我还建议同时匹配 CRLF 或 LF 结尾(以防您有 Windows或 Unix 行尾),并增强水平空白部分:
var m1 = Regex.Replace(m, @"(?:\r?\n[\p{Zs}\t]*)?\[(?:see|note|ant|restr|syn)=[^]]*]", "");
参见 regex demo
详情
(?:\r?\n[\p{Zs}\t]*)?
- 一个可选的序列
\[
- [
字符
(?:see|note|ant|restr|syn)
- see
, note
, ant
、restr
或 syn
字符序列
=
- =
字符
[^]]*
- ]
以外的 0 个或更多字符
]
- ]
字符。
我是一名优秀的程序员,十分优秀!