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

我目前正在尝试编写一些相对简单的(?)正则表达式,它捕获一组数字,然后是特定的字符。

https://regexr.com/4jp9h是一个很好的例子,我实际上认为它是有效的,但这个4 garlic cloves例子在工作中夹住了一个扳手。我玩过不匹配的空格/空格,但根本没有多少运气。

所有其他火柴都可以,例如:900g、900kg 等等。但是我终其一生都无法弄清楚如何阻止4 garlic cloves示例进行匹配。

有人有任何想法吗?:)


三国纷争
浏览 196回答 3
3回答

慕的地6264312

另一种版本是...\d+[Kk]?[Gg]\s这是允许 Kg, KG, g, G,但也试图确保在它之后没有任何东西,所以在你的测试集中......there 900G          Match900gvhellohello garam masalatest g900gd900kg               Match4 garlic cloves所以它不匹配g900gd或4 garlic cloves。正如所指出的,\s最终可能会更好地使用匹配不同事物的替代方案。第四只鸟建议使用非空白字符(?!\S)或者另一种选择也可能是非单词字符[^w]。

qq_笑_17

\d+.?[g-k]为什么要4 g匹配?你有.?这意味着匹配除新行一次(可选)之外的任何内容,我相信你想匹配kg或g所以你可以简单地使用\d+k?g\d+ - 匹配一位或多位数字k?- 匹配k(可选)g - 比赛 g

四季花海

您可能只是不允许数字和后面的字符之间有任何空格:\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- 如果您没有该设置,则还需要向正则表达式添加大写字母。
打开App,查看更多内容
随时随地看视频慕课网APP