C相当于java.util.regex

时间:2015-10-26 00:52:18

标签: java c regex

我已经用Java构建了一个程序,用于将汇编代码转换为机器代码,我使用这个正则表达式来实现它:

^((?<label>.*):)?\s*(?<instruction>\w+)(\s+(?<op1>\w+))?(\s+(?<op2>\w+))?(;\s+(?<comment>.*))?$

我尝试使用标准的regex.h,如果我将组名称编译出来,它会编译但不起作用,因为可选组()?被视为选择组...

在谷歌搜索真的很难,因为一切都是关于C#而不是C.我明白Java,Python,JavaScript甚至C#会让我的生活变得更轻松,但我需要在C中做。我无法使用正则表达式,它将成为sscanf挑战。

有没有办法将此正则表达式转换为C正则表达式,或者java.util.regex有一个C等价物?

2 个答案:

答案 0 :(得分:3)

我使用PCRE从C或C ++复杂的正则表达式中获得了一些运气。 它的使用和使用非常广泛。它曾经有过unicode数据的一些问题,但看起来其中一些已经解决了。

PCRE支持使用pcre_copy_named_substring函数在您的示例中使用的命名捕获。

答案 1 :(得分:0)

我不确定这会有多大帮助,你需要投入多少工作。但是你为什么不看看java.util.regex.Pattern的Java源代码来看看它是如何构建的。如果这就是你想要的,那么你只需要翻译成C。