gpt4 book ai didi

java - Android 2.1 中的正则表达式负前瞻

转载 作者:行者123 更新时间:2023-11-30 09:26:42 25 4
gpt4 key购买 nike

正则表达式,专门用于否定先行模式,在 Android 2.1 代码中似乎无法正常工作。

请看下面的例子:

private String parseString(String regex, String raw) {
StringBuffer sb = new StringBuffer();
Matcher m = Pattern.compile(regex).matcher(raw);
m.matches();
if (m.find()) sb.append(m.group());
return sb.toString();
}

// Using the helper method above:
// Looking for 4-digit numeric strings within a text
String regex = "(\\d{4})(?!\\d)";
String text = "Looking for a 4-digit string 1234 in here!";
Log.i("Test", "[" + parseString(regex, text) + "]");

在 Android 2.1 上,结果如下:

I/Test (  451): []

在 Android 2.2 上,它是:

I/Test (  451): [1234]

有人知道这是什么原因吗?

最佳答案

Android 的正则表达式中存在一个错误,特别是针对否定先行模式。

官方票已在 Android 2.2 (Froyo) 中创建并修复: http://code.google.com/p/android/issues/detail?id=17159

解决方法:

(a) 如果需要,请不要使用 Android 2.1;或

(b) 重建没有否定模式的正则表达式(可能会变得更脏,但应该可以工作)

关于java - Android 2.1 中的正则表达式负前瞻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14889578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com