为什么以下内容不会在 Android 中为我更改文本?
String content = "test\n=test=\ntest";
content = content.replaceAll("^=(.+)=$", "<size:large>$1</size:large>")
它返回原始值而不做任何更改。我希望它=test=
用<size:large>test</size:large>
我在这里想念什么?
编辑:好的,我明白为什么^
并且$
不工作。关键是我需要在一行的开头和结尾都匹配文本的东西,例如只包含“=一些文本=”的行。给出的大多数答案是不够的,原因如下:
=(.+)=
与行尾没有任何关系,因此匹配任何包含两个=
不并排的行。
.*=(.+)=.*
匹配整行,但与上一个问题相同
\n=(.+)=\n
越来越近,但不会匹配一行中的两行(例如test\n=test=\n=test=\ntest
)它也不会匹配第一行或最后一行的实例
(?<=\n)=(.+)=(?=\n)
几乎可以工作,但再次与第一行或最后一行的实例不匹配
(?<!.)=(.+)=(?!.)
是唯一一个似乎实际上会匹配以 开头和结尾的每一行,=
例如,但 $1 包含替换字符串和原始字符串。
content = content.replaceAll("(?<=(\n|^))=(.+)=(?=(\n|$))", "<size:large>$2</size:large>");
是唯一似乎真正做它应该做的事情的答案。