Regex 修复不正确匹配两个连续字符的正则表达式
我需要一些帮助来修复我的正则表达式,它应该符合以下条件:Regex 修复不正确匹配两个连续字符的正则表达式,regex,Regex,我需要一些帮助来修复我的正则表达式,它应该符合以下条件: s且仅s f且仅f dn且仅dn d前面的任何一个或两个整数(35d) 或任何带小数的数字 ss将无效,dnf将无效,305d将无效 正则表达式: ^(s|f|dn)|(\d{2}d)$让我开始学习 sf匹配,但不应该匹配。 您的|操作员正在吞食您的锚!根据本文,引擎将第一个备选方案视为^(s | f | dn),第二个备选方案视为(\d{2}d)$-因此s是一个有效的匹配,因为没有说明它必须位于字符串的末尾 尝试在非捕获组
且仅s
s
且仅f
f
且仅dn
dn
- d前面的任何一个或两个整数(
) 或任何带小数的数字35d
将无效,ss
将无效,dnf
将无效305d
让我开始学习^(s|f|dn)|(\d{2}d)$
匹配,但不应该匹配。sf
- 您的
|
操作员正在吞食您的锚!根据本文,引擎将第一个备选方案视为^(s | f | dn)
,第二个备选方案视为(\d{2}d)$
-因此s
是一个有效的匹配,因为没有说明它必须位于字符串的末尾
尝试在非捕获组中粘贴您的术语,以确保
操作符不能触碰您的锚定:^(?(s | f | dn)|(\d{2}d))$
应该可以工作;似乎同意
我还看到一个注释,您希望任何十进制数都有效。因此,您的正则表达式是:
^(?(s | f | dn)|(\d{2}d)|(\d+\.\d+)$
-看起来您想创建一个正则表达式,但不知道从哪里开始。请查看资源,它有很多提示。另外,有关一些基本的正则表达式信息,请参阅post。一旦您准备好了一些表达式,但解决方案仍然存在问题,请使用最新的详细信息编辑问题,我们将很乐意帮助您解决问题。您能再举几个例子吗?您的问题有点不清楚。这就是你要找的:(s | f | dn)|(\d{2}d)
?您可能需要开始/结束字符(^
和$
),这取决于您是否尝试匹配整个字符串。此模式匹配:<代码> > <代码>,>代码> f '/COD>,<代码> DN '/COD>,或'<代码> 99 D < /代码>(任意2个数字,D)。谢谢@ DVO,这为我建立了一个基础。不过,这仍然允许“sf”或“ss”I投票重新开放。将OP发送到链接页面没有任何帮助,也不是关于特定正则表达式的特定问题的重复。感谢社区对我的信任。谢谢@Nick,那是我需要的秘方。我还需要匹配任何数字,所以最后我做到了:^(?(s | f | dn)|(\d{2}d)|([0-9]+([.][0-9]+)?)$,实际上,我需要匹配一个“d”前面的1或2个数字,所以(\d{2}d)变成了(\d{1}d}\d}d}d)我正在学习!!