java - 是否可以编写正则表达式,其评估总是失败?

标签 java regex

<分区>

Possible Duplicate:
What regular expression can never match?

我想写正则表达式,什么都不匹配,对应空语言。空语言是正则的,所以应该有办法为它写正则表达式。

我对如何使用 java.util.regex 包提供的 API(如果可能)用 Java 编写它特别感兴趣,但任何其他语言/API 都可以。我很好奇,如果这样的事情是可能的。

再次澄清一下,我想找到正则表达式 EMPTY_LANG_REGEX 这样

Pattern.compile(EMPTY_LANG_REGEX).matcher(s).matches()

将为每个字符串 s 产生 false

我知道像 a++a 这样的东西是有效的,但那是一种 hack 并且存在性能问题。

感谢您的回答。

最佳答案

根本不匹配任何字符串,甚至不匹配空字符串:

^(?=a)b$

另一种不使用前瞻的替代方法(在多行模式下不起作用):

a^

还有一种方法,使用对每个字符都失败的否定字符类:

^[^\S\s]$

对于支持单词边界匹配的正则表达式实现,这总是会失败,因为在 'aa' 中的 a 字符之间不会有单词边界:

^a\ba$

或者更简单,并且可能在大多数正则表达式实现中也无法匹配:

^\b$

关于java - 是否可以编写正则表达式,其评估总是失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2302941/

相关文章:

属性中的 Javascript 正则表达式

javascript - 替换文本,但忽略文档中的某个字符串

javascript - 无法使用正则表达式提取模式之间的字符串

javascript - 正则表达式重复元素

java - 进程类的 wait 方法不返回

java - log4j2配置文件很困惑

java - 下面的比赛在 Espresso

Java模式匹配正则表达式

java - 泛型。使用通配符 `<?>` 与使用类型参数 `<E>`

java - 如何为嵌入式mongo(flapdoodle)全局设置WriteConcern以修复间歇性测试失败