![](/img/trans.png)
[英]Replace strings using regular expressions and backreferences in Clojure
[英]Using backreferences in java regular expressions adjacent to digits
我想使用帶有正向引用的regexp替換如果目標字符串如下所示:
"$1 123"
一切正常。 但是如果我想要一個目標字符串,例如:
"$1123"
它不會工作。
在perl中,您可以使用
"${1}123"
為了區分反向引用和相鄰數字-是否存在Java等效項?
編輯
如果具有以下格式的時間戳記
YYYYMMDDHHMMSS
喜歡:
20130811123000
我想重設小時,分鍾和秒以獲取
20130811000000
我想做的是
String newstring = timestamp.replaceFirst("(\\d{8}))\\d{6}","${1}000000");
您需要將替換指定為:
"$1\\123"
看來逃脫工程。
看到這種情況:
String input = "abcd";
System.out.println(input.replaceAll("(a)bcd(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?", "$1123"));
System.out.println(input.replaceAll("(a)bcd(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?(e)*?", "$1\\123"));
輸出:
23
a123
在這種情況下,我在反向引用組1和反向引用組11之間存在歧義。在第一個打印中,我沒有逃脫反向引用,因此組11很可能會被解釋,並且為空。 在第二張照片中,在回溯到第1組后,我避免了替換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.