Java 不带前一个字符的字符的正则表达式匹配
我有以下字符串:Java 不带前一个字符的字符的正则表达式匹配,java,regex,Java,Regex,我有以下字符串: “位置字符串:位置字符串:位置-C:\string” 我想将其分为以下三个字符串: location-stringlocation-stringlocation-C?:\string 使用String.split(regex)时,正则表达式应该是什么 基本上,我想在冒号“:”字符上拆分,但前面有“?”字符的字符除外 提前感谢,, PM.您可以使用反向查找。它匹配的冒号前面没有? (?<!\?): (? Java正则表达式是 "(?<!\\?):" ”(?您可以使
“位置字符串:位置字符串:位置-C:\string”
我想将其分为以下三个字符串:
location-string
location-string
location-C?:\string
使用String.split(regex)时,正则表达式应该是什么
基本上,我想在冒号“:”字符上拆分,但前面有“?”字符的字符除外
提前感谢,,
PM.您可以使用反向查找。它匹配的冒号前面没有
?
(?<!\?):
(?
Java正则表达式是
"(?<!\\?):"
”(?您可以使用负数lookback。它匹配未在?
前面的冒号
(?<!\?):
(?
Java正则表达式是
"(?<!\\?):"
(?您可以使用带有限制的split()
)
public static void main(String[] args) {
String s = "location-string:location-string:location-C?:\\string";
System.out.println(Arrays.toString(s.split(":", 3)));
}
O/p:
您可以使用带有限制的split()
public static void main(String[] args) {
String s = "location-string:location-string:location-C?:\\string";
System.out.println(Arrays.toString(s.split(":", 3)));
}
O/p:
最令人遗憾的是,这是基于只发生在非常特殊的位置(第三个和最后一个)的特殊情况(?:)。考虑到“我想在冒号上拆分:'字符,但前面有'?'字符的字符除外”,您确定这是一个好答案吗?双反斜杠作为注释指示符?@laune-是..这与给定的字符串紧密耦合。我只是指出,这也可以通过这种方式完成。最遗憾的是,这是基于只发生在非常特殊位置(第三个和最后一个)的特殊情况(?)。你确定这是一个很好的答案吗“我想在冒号“:”上拆分字符,除了前面有“?”字符的字符之外?作为注释指示符的双反斜杠?@laune-是的..这与给定的字符串紧密耦合。我只是指出,也可以这样做。