java - 有没有一种优雅的方法可以在 Java 中进行部分正则表达式匹配?

标签 java regex

我需要的是检查给定的字符串是否部分匹配给定的正则表达式。例如,对于正则表达式 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/

相关文章:

java - 使用 JSoup 调用 JSP 函数

java - ANTLR 正则表达式中的范围量词语法

python - 我如何表示此正则表达式不会出现 "bad character range"错误?

Python 非贪婪正则表达式并不完全符合我的预期

python - 如何修复输出文件不逐行破坏输出?

mysql - 将大量扩展插入转换为 mysql 的简单插入

javascript - 如何为不同的域设置 cookie?

java - Netty channel.write 不写消息

java - 运行 ant junit 时出现 ClassNotFoundException

java - Java 8 的默认垃圾收集器