我需要遍历形式生产规则的符号:

例如:
输入值

<relational operator> ::= = | <> | < | <= | >= | > | in
<next constant definition> ::= <empty> | <next constant definition> ; <constant definition>


所以我需要派一个正则表达式来分割文本。这是我到目前为止的

(?:\s|^|\s<|^<)(?:.*?)(?:\s|$|\s>|>$)


问题是re.findall()不能产生我想要的输出

预期输出为:

[<relational operator>, ::=, =, |, <>, |, <, |, <=, |, >=, |, >, |, in]
[<next constant definition>, ::=, <empty>, |, <next constant definition>, ;, <constant definition>]

最佳答案

如何使用类似<\w+(?:\s+\w+)*>|\S+这样的简单内容

   < \w+
   (?: \s+ \w+ )*
   >
|
   \S+

关于python - 用于分割BNF语法符号的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27623849/

10-11 08:40