字符类减法,从Java语法转换为RegexBuddy

Java使用哪个正则表达式引擎?

在像RegexBuddy这样的工具中使用

[az&&[^bc]] 

Java中的表达式很好但是在RegexBuddy中它还没有被理解。

事实上它报道:

匹配下面列表中的单个字符[az&&[^bc]

  • az之间范围内的字符: az
  • 其中一个字符&[^bc&&[^bc
  • 匹配字符]字面意思: ]

但我想匹配a和z之间a一个字符与一个非bc的字符相交

像大多数正则表达式一样, java.util.regex.Pattern有自己的特定function,语法可能与其他语法不完全兼容; 这包括字符类联合,交集和减法:

  • [ad[mp]]ad ,或mp[a-dm-p] (联合)
  • [az&&[def]]def (十字路口)
  • [az&&[^bc]]azbc除外: [ad-z] (减法)

Java正则表达式最重要的“警告”是matches尝试将模式与整个字符串匹配。 这对大多数引擎来说都是非典型的,有时可能会引起混淆。

也可以看看

  • regular-expressions.info/Flavor比较和Java风味笔记

关于字符类减法

减法允许您将Java中的“所有辅音”定义为[az&&[^aeiou]]

此语法特定于Java。 在XML Schema,.NET,JGSoft和RegexBuddy中,它是[az-[aeiou]] 。 其他口味可能根本不支持此function。

参考

  • XML正则表达式中的regular-expressions.info/Character类
  • MSDN – 正则表达式字符类 – 减法

相关问题

  • Java正则表达式中字符类交叉点的背后是什么?

Java使用自己的正则表达式引擎,该行为在Pattern类中定义。

您可以使用Eclipse插件或在线测试它。

RegexBuddy尚不支持Java正则表达式风格独有的字符类并集,交集和减法语法。 这是RegexBuddy尚不支持的Java正则表达式语法的唯一部分。 我们计划在RegexBuddy的未来版本中实现这一点。 这被推迟的原因是因为没有其他正则表达式支持这种语法。

PS:如果您对RegexBuddy有疑问,请在您的问题中添加“regexbuddy”标签。 然后问题会自动显示在我的RSS阅读器中。 我不遵循“正则表达式”标签,因为有太多问题使用该标签,而且大多数问题已经在我看到它们时得到了解答。