我有以下正则表达式
in = in.replaceAll("d+\n", "");
我想用它去掉行尾的“d”
But I just won't do that d
<i>I just won't do that</i> d
No, no-no-no, no, no d
我的正则表达式 in = in.replaceAll("d+\n", "");
最佳答案
很可能你的行不是只用 \n
分隔的,而是用 \r\n
分隔的。您可以尝试使用 \r?\n
在 \n
之前选择性地添加 \r
。我们也不要忘记最后一个 b
,它后面没有任何行分隔符。要处理它,您需要在正则表达式中添加 $
,这意味着代表数据结尾的 anchor 。所以你的最终模式可能看起来像
in.replaceAll(" d+(\r?\n|$)", "")
如果您不想删除这些行分隔符,您可以使用“行尾 anchor ”$
和 MULTILINE
标记 (?m)
而不是像
in.replaceAll("(?m) d+$", "")
特别是因为在最后一个 b
之后没有行分隔符。
在 Java 中,当指定了 MULTILINE
标志时,$
将匹配空字符串:
- 在 line terminator 之前:
- 回车符后紧跟换行符 (
"\r\n"
) - 没有回车符(
'\r'
)的换行符('\n'
)就在前面 - 独立回车符(
'\r'
) - 下一行字符(
'\u0085'
) - 换行符(
'\u2028'
) - 段落分隔符(
'\u2029'
)
- 回车符后紧跟换行符 (
- 在字符串的末尾
当 UNIX_LINES
标志与 MULTILINE
标志一起指定,$
将匹配换行符 ('\n'
) 之前或末尾的空字符串字符串。
无论如何,如果可能的话don't use regex with HTML
.
关于java - 如何在正则表达式中定位行尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21128246/