为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式,匹配数字,然后是一系列字符

正则表达式,匹配数字,然后是一系列字符

PHP
三国纷争 2021-12-03 19:21:02
我目前正在尝试编写一些相对简单的(?)正则表达式,它捕获一组数字,然后是特定的字符。https://regexr.com/4jp9h是一个很好的例子,我实际上认为它是有效的,但这个4 garlic cloves例子在工作中夹住了一个扳手。我玩过不匹配的空格/空格,但根本没有多少运气。所有其他火柴都可以,例如:900g、900kg 等等。但是我终其一生都无法弄清楚如何阻止4 garlic cloves示例进行匹配。有人有任何想法吗?:)
查看完整描述

3 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

另一种版本是...


\d+[Kk]?[Gg]\s

这是允许 Kg, KG, g, G,但也试图确保在它之后没有任何东西,所以在你的测试集中......


there 900G          Match

900gvhello

hello garam masala

test g900gd

900kg               Match

4 garlic cloves

所以它不匹配g900gd或4 garlic cloves。


正如所指出的,\s最终可能会更好地使用匹配不同事物的替代方案。


第四只鸟建议使用非空白字符(?!\S)


或者另一种选择也可能是非单词字符[^w]。


查看完整回答
反对 回复 2021-12-03
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

\d+.?[g-k]

为什么要4 g匹配?

你有.?这意味着匹配除新行一次(可选)之外的任何内容,我相信你想匹配kgg

所以你可以简单地使用

\d+k?g
  • \d+ - 匹配一位或多位数字

  • k?- 匹配k(可选)

  • g - 比赛 g


查看完整回答
反对 回复 2021-12-03
?
四季花海

TA贡献1811条经验 获得超5个赞

您可能只是不允许数字和后面的字符之间有任何空格:

\d+[^ ]?[g-k]

通知,这[g-k]意味着你从克接受字符的范围,以K,即像实施例900h900ij将匹配。如果您不希望那样并且只希望kg字符匹配,您可以简单地执行以下操作:

\d+[^ ]?[gk]

如果您对kg订单特别感兴趣,您可以简单地执行以下操作:

\d+[^ ]k?g --> this is same as Code Maniac answer \d+k?g

显然还要注意ignore case flag i- 如果您没有该设置,则还需要向正则表达式添加大写字母。


查看完整回答
反对 回复 2021-12-03
  • 3 回答
  • 0 关注
  • 195 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信