当前位置: 首页 > 知识库问答 >
问题:

带有可选组的模式

仲智
2023-03-14

我有一个有组的模式。这些组都是可选的。

完整的posible模式是:

==A=B++C+D#E-F-F-F-F-F-F-F-F-F-F

但也可以看起来像这样

==A=B++C+D#E-F-F-F-F-F-F-F-F-F-F
==A.A++C.C+D.D-F
=B++C-F
++C+F-F-F

不可能在组中获得限定词,例如(组A不可能' = ')。

所以我尝试了这些正则表达式:

(.*)?\=\=(.*)?\=(.*)?\+\+(.*)?\+(.*)?\#(.*)?\-(.*)

问题:

  • 如果缺少组,则不匹配
  • 具有“#”(E)的组包含第一个组“-”(F)<ul>
  • 001.002
  • 可编程逻辑控制器。003
  • M01.001
  • P1
  • 测试-KF2--

我的错是什么?

共有1个答案

阚吕恭
2023-03-14

我将通过构建每个阶段来解决这个问题,因此,您的“A”组以==开头,并且不能包含=,因此该部分可以由==[^=] 匹配,但整个组是可选的,因此我将使用它作为(==[^=] )? ,将相同的主体应用于您的“B”组,它以单个=开头并且不能包含将提供一个可选的(=[^ ] )? 组,沿着所有组工作最终会得到类似的结果:

(==[^=]+)?(=([^+]+))?(\+\+([^+]+))?(\+([^#]+))?(#([^-]))?(\-(.*))?

我已经对任何给定组中不允许的字符进行了假设,并且还假设每个组都是可选的(因此空字符串匹配),并且没有组需要前一组(因此 D 可以在没有 C 的情况下出现是有效的) - 这些假设可以通过额外的分组或调整字符类来纠正, 因此,例如,以下内容允许单独的 F 组(如果您正在解析数据,这可能很方便)

(==[^=]+)?(=([^+]+))?(\+\+([^+]+))?(\+([^#]+))?(#([^-]))?(\-([^-]))*
 类似资料:
  • 大家好,我需要为下面的示例创建AVRO模式; 当我按照建议更改所有者对象时,avro-tool返回错误。 ]} 测试:

  • 我想创建一个Mongoose模式,用以下限制验证下面的对象: 字段2是可选的(0-1关系), 代码示例 提前谢谢。

  • 我有一个Spring RESTendpoint,具有如下所示的可选请求参数: 当我试图测试这个使用Mockito框架的endpoint时 提前感谢!

  • 我正在实现一个复合组件,我发现了一个我没有找到解决方案的问题。 我指定了它的属性,这些属性可以由页面作者传递,也可以不传递,但是我不能指定一个method属性(操作的方法表达式),如果这个属性没有被传递,复合组件就不使用composite:implementation标记中的method属性。

  • 问题内容: 现在我有: 除非我要转换没有微秒的字符串,否则此方法效果很好。如何指定微秒是可选的(如果它们不在字符串中,则应将其视为0)? 问题答案: 您可以使用一个块:

  • 我在这里使用这个示例代码创建一个JTree,其中所有的叶子都有一个复选框。我遇到的问题是,我还需要能够选择节点对象,而不必勾选复选框。在我的用例中,勾选复选框将使某些内容可见或隐藏,但选择节点将允许在UI的单独部分编辑对象。最好的方法是什么?是否可以检测何时单击复选框的“框”部分,或者是否选中节点? 我看到的另一个错误是,当文件夹有子元素时,文件夹左侧的指示器正确显示文件夹已打开: 但是如果'文件