我需要的是检查给定的字符串是否部分匹配给定的正则表达式。例如,对于正则表达式 ab[0-9]c
,字符串“a”、“ab”、“ab3”和“b3c”将“匹配”,但字符串“d”不匹配"、"abc"或 "a3c"。我一直在做的是笨拙的 a(?:b(?:[0-9](?:c)?)?)?
(仅适用于某些部分匹配,特别是那些“开始”匹配的),但由于这是 API 的一部分,我宁愿为用户提供一种更直观的方式来输入他们匹配的正则表达式。
如果描述不是很清楚(我知道它可能不是!),这将用于验证文本框上的文本输入。我想防止任何会导致无效字符串的编辑,但我不能只将字符串与常规正则表达式匹配,因为在完全输入之前,它不会匹配。例如,使用上面的正则表达式 (ab[0-9]c
),当我尝试输入“a”时,它是不允许的,因为字符串“a”与正则表达式不匹配。
基本上,它是一种适用于正则表达式的反向 startsWith()
。 (new Pattern("ab[0-9]c").startsWith("ab3")
应该返回 true
。)
有什么想法吗?
最佳答案
您要找的是 Matcher.hitEnd() 吗?
Pattern thePattern = Pattern.compile(theRegexString);
Matcher m = thePattern.matcher(theStringToTest);
if (m.matches()) {
return true;
}
return m.hitEnd();
关于java - 有没有一种优雅的方法可以在 Java 中进行部分正则表达式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1493924/