java - 如何将正则表达式转换为 extglob 表达式?

标签 java regex extglob

我想将正则表达式转换成 glob

我在看 jakarta oro但我找不到适合我需要的方法。它编译正则表达式并返回其等效的 glob

都是Type-3文法,理论上应该可以。

不幸的是,我在使用 JDK5 时受到了限制。

最佳答案

extglob 可以匹配许多正则表达式结构(pattern-list 是一个变更列表):

extglob           regex
--------------    -----------------


?                 [^/]
*                 [^/]*
.                 \.
**                .
?(pattern-list)   (pattern-list)?
*(pattern-list)   (pattern-list)*
+(pattern-list)   (pattern-list)+
@(pattern-list)   (pattern-list)
!(pattern-list)   (?!pattern-list)

据我所知,在 extglob 中也有一些正则表达式不能做的事情:

??????????????    [^abc]
??????????????    \1
??????????????    most look arounds

假设正则表达式中的所有构造都具有 extglob 等效项,则可以将其转换为 extglob 形式。这会很困难,因为正则表达式由 CFG 表示。而您使用的是 Java,这会迫使您使用邪恶的转义符 \\

为什么不使用支持正则表达式的不同 bash 实用程序呢?喜欢this .

关于java - 如何将正则表达式转换为 extglob 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26042753/

相关文章:

linux - 模式匹配在 bash 脚本中不起作用

bash - 负匹配在参数扩展中extglob是如何工作的

java - 即时创建 java 参数化类型

Java 通过读取前几个字节读取实际文件类型(取证)

java - 服务器启动时出现 spring Autowiring 错误

python - 返回与出现次数、正则表达式相关的匹配

java - 如何构建/编译 C++、Java 和 Python 项目?

java - 在java中使用正则表达式仅验证特定的电子邮件

regex - sed 在长数字的数字之间插入空格