Java正则表达式用于放置一个不在<p> </p>标签内的#字符串开头的字符串

时间:2016-11-22 09:08:22

标签: java regex string

输入: #This is a header\nSome line\nAnother line

期望的输出:

#This is a header

<p>Some Line</p>

<p>Another line</p>

我试过这个:

s = s.replaceAll("(^|\\n)*(?!#)([^\\n]+)(\\n|$)", "$1<p>$2</p>$3");

但它无法正常工作。 所以我感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

a.replaceAll("(?m)^(#[^\r\n]+)\r?\n([^\r\n]+)\r?\n([^\r\n]+)$", "<p>$1</p><p>$2</p><p>$3</p>")

正则表达式:(?m)^(#[^\r\n]+)\r?\n([^\r\n]+)\r?\n([^\r\n]+)$

  • (?m)添加了多重标记。这意味着^$字符的行为方式不同。
  • ^任何一行的开头
  • (#[^\n\r]+)第1组:文字#一个或多个非换行和非回车字符
  • \r?\n可选回车字符,换行符和非回车字符
  • ([^\n]+)第2组:1个或多个非换行和非回车字符
  • \r?\n可选回车字符,换行符和非回车字符
  • ([^\n]+)第3组:1个或多个非换行和非回车字符
  • $任意行的结尾

取代:<p>$1</p><p>$2</p><p>$3</p>

$n将插入该组号。因此$1将成为“#This is a header”。