java - 如何在正则表达式中定位行尾?

标签 java regex

我有以下正则表达式 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/

相关文章:

java - 将保存 double 型的对象转换为字符串,然后再转换回 double 型

java - 拖放图像按钮有 onDrag 问题

java - JSP/servlet/IE 组合不会在 Enter 时提交表单详细信息

Java - 尝试理解重载方法是如何工作的

java - Java 中的 HttpServlet 错误

使用正则表达式按规则进行 C# 字符串操作

python - 使用正则表达式从一堆字符串中解析日期和时间

javascript - 为什么带有全局标志的正则表达式会给出错误的结果?

javascript - 来自 ReDos 攻击的安全正则表达式模式

java - 如何使用 Java Regex 匹配除指定模式以外的所有内容