【问题标题】:java regex parenthesisjava正则表达式括号
【发布时间】:2016-11-27 18:26:59
【问题描述】:

我试图在 Java 中将一个命题公式拆分为多个子公式。我可以使用正则表达式还是应该编写解析器?我的语法仅由文字符号(A、B、C、...)和连接符(|、&、=>、、not)组成

示例 1:

"((A | B) & (B | C))" :

array[0]= (A | B) 
array[1]=    &
array[2]= (B | C) 

示例 2:

"((A => B) => (B | C)) & (B => A)" :

array[0]= (A => B) 
array[1]=    =>
array[2]= (B | C) 
array[3]=    &
array[4]= (B => A)

【问题讨论】:

  • 可能你需要编写一个解析器,但我不能肯定,因为不清楚你应用什么规则来决定你的两个示例中的结果应该是什么。用散文写出规则是很好的第一步。
  • @JohnBollinger 实际上,我尝试将公式拆分为子公式以构建语义表
  • @JohnBollinger 否则,如果我能得到“中间”连接器,那就太好了。比如两个公式中的“&”。

标签: java regex parsing


【解决方案1】:

此正则表达式适用于给出的示例:

(?:\([^()]+\))++|(?:&|<?=>|\|)++

https://regex101.com/r/NSQ9aZ/3

匹配以 ( 开头并以 ) 结尾的字符串。也匹配 &,|,=>,, not

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多