[英]How to locate the end of the line in regex?
我in = in.replaceAll(" d+\\n", "");
有以下正則表達式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
,它后面沒有任何行分隔符。 要處理它,您需要在正則表達式中添加$
,這表示表示數據結尾的錨點。 所以你的最終模式可能看起來像
in.replaceAll(" d+(\r?\n|$)", "")
如果您不想刪除這些行分隔符,則可以使用帶有MULTILINE
標志(?m)
“行錨結尾” $
代替像這樣的行分隔符
in.replaceAll("(?m) d+$", "")
特別是因為最后一個b
之后沒有行分隔符。
在Java中,當指定MULTILINE
標志時, $
將匹配空字符串:
"\\r\\n"
) '\\n'
)不帶回車符( '\\r'
) '\\r'
) '\
'
) '\
'
) '\
'
) 當與MULTILINE
標志一起指定UNIX_LINES
標志時, $
將與空字符串匹配,就在換行符( '\\n'
)之前或字符串的末尾。
無論如何, 不要在HTML
使用正則表達式 。
正如Pshemo在他的回答中指出的那樣,您的字符串很可能包含Windows風格的換行符,它們是\\r\\n
而不是\\n
。
您可以使用以下代碼修改正則表達式,以解決兩個換行符(以及字符串以d
結尾而不帶換行符的情況)的問題:
in = in.replaceAll("(d+(?=\r\n)|d+(?=\n)|d+$)","");
此正則表達式將刪除與d+
, \\r\\n
, d+
, \\n
或d+$
(在字符串末尾之前的任何d
匹配的任何內容。
(d+(?=\\r\\n)|d+(?=\\n)|d+$)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.