Java 匹配字符的正则表达式逻辑数
Java regex logical number of matched characters
假设我需要匹配一个字符串,其中包含不适合 16 位的字符并且由 Java 中的高-低代理对处理。例如 pizza slice 字符。
我写了下面的代码来匹配它:
Pattern pattern = Pattern.compile("\uD83C\uDF55");
String s = "\uD83C\uDF55";
Matcher matcher = pattern.matcher(s);
matcher.find();
System.out.println(matcher.end());
令我惊讶的是输出是 2 而不是 1,因为逻辑上只有一个字符。有没有办法告诉 Java 正则表达式匹配器到 return 1 这里?
没有。 String
对象使用 char[]
作为支持结构。大多数 String
方法使用该数组中的 char
值进行操作。 Matcher
做同样的事情。它报告匹配模式相对于基础 char[]
.
的开始和结束位置
假设我需要匹配一个字符串,其中包含不适合 16 位的字符并且由 Java 中的高-低代理对处理。例如 pizza slice 字符。
我写了下面的代码来匹配它:
Pattern pattern = Pattern.compile("\uD83C\uDF55");
String s = "\uD83C\uDF55";
Matcher matcher = pattern.matcher(s);
matcher.find();
System.out.println(matcher.end());
令我惊讶的是输出是 2 而不是 1,因为逻辑上只有一个字符。有没有办法告诉 Java 正则表达式匹配器到 return 1 这里?
没有。 String
对象使用 char[]
作为支持结构。大多数 String
方法使用该数组中的 char
值进行操作。 Matcher
做同样的事情。它报告匹配模式相对于基础 char[]
.