我目前正在尝试编写一些相对简单的(?)正则表达式,它捕获一组数字,然后是特定的字符。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]。
qq_笑_17
TA贡献1818条经验 获得超7个赞
\d+.?[g-k]
为什么要
4 g
匹配?
你有.?
这意味着匹配除新行一次(可选)之外的任何内容,我相信你想匹配kg
或g
所以你可以简单地使用
\d+k?g
\d+
- 匹配一位或多位数字k?
- 匹配k
(可选)g
- 比赛g
四季花海
TA贡献1811条经验 获得超5个赞
您可能只是不允许数字和后面的字符之间有任何空格:
\d+[^ ]?[g-k]
通知,这[g-k]
意味着你从克接受字符的范围,以K,即像实施例900h
,900ij
将匹配。如果您不希望那样并且只希望k
和g
字符匹配,您可以简单地执行以下操作:
\d+[^ ]?[gk]
如果您对kg
订单特别感兴趣,您可以简单地执行以下操作:
\d+[^ ]k?g --> this is same as Code Maniac answer \d+k?g
显然还要注意ignore case flag i
- 如果您没有该设置,则还需要向正则表达式添加大写字母。
- 3 回答
- 0 关注
- 195 浏览
添加回答
举报
0/150
提交
取消