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

时间:2010-07-08 08:08:21

标签: java regex regexbuddy character-class

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

如果我使用

,请使用像RegexBuddy这样的工具
[a-z&&[^bc]]

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

事实上,它报道:

  

匹配中的单个字符   [a-z&&[^bc]

下面的列表      
      
  • az之间的字符: a-z
  •   
  • 其中一个字符&[^bc &&[^bc
  •   
  • 按字面匹配字符] ]
  •   

但我希望匹配az之间与非bc

字符相交的字符

3 个答案:

答案 0 :(得分:19)

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

  
      
  • [a-d[m-p]]ad,或mp[a-dm-p] (联盟) < / LI>   
  • [a-z&&[def]]def (十字路口)
  •   
  • [a-z&&[^bc]]azbc除外:[ad-z] (扣除)
  •   

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

另见


关于字符类减法

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

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

参考

相关问题

答案 1 :(得分:4)

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

您可以使用Eclipse pluginonline进行测试。

答案 2 :(得分:2)

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

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