gpt4 book ai didi

java - 正则表达式 "("和 ")"是必要的吗?

转载 作者:行者123 更新时间:2023-12-02 08:59:57 24 4
gpt4 key购买 nike

我只需要使用 ()模式是否由多个组组成?

如果模式是 true|false加不加括号都没关系,对吧?再说一次,如果模式是 POINT_PATTERN("\\((\\d+),(\\d+)\\)")它确实有所不同,因为我想从中获得两个不同的值。

我可以写出我当前的模式吗,它们是:

NUMBER_PATTERN("(?!(0[0-9]))[0-9]+"),
BOOLEAN_PATTERN("(true|false)"),
STRING_PATTERN("(\\w+)"),
INTEGER_PATTERN("/^([+-]?[1-9]\\d*|0)$/"),

作为

NUMBER_PATTERN("(?!0[0-9])[0-9]+"),
BOOLEAN_PATTERN("true|false"),
STRING_PATTERN("\\w+"),
INTEGER_PATTERN("^[+-]?[1-9]\\d*|0$");

没有任何损失?

我特别不确定 NUMER_PATTERNINTEGER_PATTERN 。还有其他原因为什么我不应该这样做(糟糕的编码风格,...)?

最佳答案

是的,字符或字符类序列是默认值,并且它的优先级高于 OR 运算符 |。因此,如果您的序列前面或后面没有任何内容(在 true|false 的情况下清楚显示),那么您就不需要它们。

但是,如果您想使用例如this is true|false 对于 "this is true""this is false" 那么对于 "this is false” 并且您需要对 true|false 进行分组,例如使用非捕获组,例如这是 (?:true|false)

我没有发现您删除了一些括号的表达式有任何问题。但是,如果您想检查它们,只需将它们放入显示优先级的(在线)检查器中(例如 this one )并检查结果“解释”是否发生变化。用于正则表达式测试的各种 IDE 插件有望为您提供类似的 TreeView

请注意,您有时会使用边界匹配器(^$),有时则不会。我希望这些要么被使用,要么不被使用。

关于java - 正则表达式 "("和 ")"是必要的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60242069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com