Java 特定单词多次出现的正则表达式

Java 特定单词多次出现的正则表达式,java,regex,validation,salesforce,apex,Java,Regex,Validation,Salesforce,Apex,你好 我试图创建一个验证规则,检查正则表达式是否只接受特定的短语。Regex是基于Java的 以下是正确输入的示例: 1OR2 2 1或2或15 (2OR3)和1 (12、13和1)或(4和5) ((2和3和1)或(4和5))和6 但我很高兴,只要正则表达式能够接受以下内容: ())34和(4 我不知道如何创建一个正则表达式来检查括号是否正确打开和关闭(可以嵌套)。我假设不可能在正则表达式中检查它,因此我已经在代码中对括号进行了正确的验证(堆栈实现)。在代码中,我对短语进行了第二步验证 我需要正

你好

我试图创建一个验证规则,检查正则表达式是否只接受特定的短语。Regex是基于Java的

以下是正确输入的示例:
  • 1OR2
  • 2
  • 1或2或15
  • (2OR3)和1
  • (12、13和1)或(4和5)
  • ((2和3和1)或(4和5))和6
  • 但我很高兴,只要正则表达式能够接受以下内容:

    ())34和(4

    我不知道如何创建一个正则表达式来检查括号是否正确打开和关闭(可以嵌套)。我假设不可能在正则表达式中检查它,因此我已经在代码中对括号进行了正确的验证(堆栈实现)。在代码中,我对短语进行了第二步验证

    我需要正则表达式做的就是检查短语中是否包含以下特定内容:

    允许数字、圆括号、单词和或多次出现以及空格。 它不应接受字母或其他字符。 到目前为止,我所能创造的是:

    ^[0-9\\(][0-9\\(\\)]*

    还尝试添加以下内容:

    \\b(和|或)\\b

    在第二对括号内,但没有运气


    我不知道如何更正它以添加或添加单词。

    我使用了以下内容并匹配了您提供的所有输入:

    ^[^\)][0-9 \( (AND|OR)]*$
    
    我以为你不想开始),这就是为什么我包括^[^\])


    如果您不知道,我会用正则表达式检查代码。

    因为您有任意数量的嵌套元素,所以使用正则表达式是不可能的

    仅出于演示目的,它匹配零个或多个连词和一组括号:

    ^\d+(\s*(?:AND|OR)\s*(\d+|\(?\s*\d+(\s*(?:AND|OR)\s*\d+)\s*\)))*$|^(\d+|\(?\s*\d+(\s*(?:AND|OR)\s*\d+)\s*\))\s*(\s*(?:AND|OR)\s*\d+)*$
    
    就这样。添加更多的嵌套括号集和级别会导致复杂性呈指数级增加,直到完全中断


    如果括号可以嵌套,那么regex肯定是用于作业的错误工具。正则表达式不能处理递归。听起来你想写一个解析器。谢谢你的例子,真的helped@Mikke此模式无法正确验证所讨论的短语。请参阅:感谢这个复杂的示例,它表明无法进行检查brackets@Mikke是的,很不幸。如果答案对你有帮助,请考虑赞成/接受。