字符类减法,从Java语法转换为RegexBuddy
Java使用哪个正则表达式引擎?
在像RegexBuddy这样的工具中使用
[az&&[^bc]]
Java中的表达式很好但是在RegexBuddy中它还没有被理解。
事实上它报道:
匹配下面列表中的单个字符
[az&&[^bc]
a
和z
之间范围内的字符:az
- 其中一个字符
&[^bc
:&&[^bc
- 匹配字符
]
字面意思:]
但我想匹配a和z
之间a
一个字符与一个非b
或c
的字符相交
像大多数正则表达式一样, java.util.regex.Pattern
有自己的特定function,语法可能与其他语法不完全兼容; 这包括字符类联合,交集和减法:
[ad[mp]]
:a
到d
,或m
到p
:[a-dm-p]
(联合)[az&&[def]]
:d
,e
或f
(十字路口)[az&&[^bc]]
:a
到z
,b
和c
除外:[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阅读器中。 我不遵循“正则表达式”标签,因为有太多问题使用该标签,而且大多数问题已经在我看到它们时得到了解答。