关于度量的PHP正则表达式
我有一些字符串,我想得到金额和单位。下面是字符串等所需数组的示例:关于度量的PHP正则表达式,php,regex,Php,Regex,我有一些字符串,我想得到金额和单位。下面是字符串等所需数组的示例: 10袋->[“10”,“袋”] 10磅->[“10”,“磅”] 10磅橡木[“10”,“磅](我不需要最后一部分) 10克[“10”,“g”] 10磅木材+8块木板+1个螺丝[“10”,“磅”,“8”,“1”] 你知道吗?我有很多“我不需要的最后一部分”,所以我不会使用str_replace函数。目前,我试图找到一些与preg_match一起使用的东西。我发现了类似这样的东西,但我不擅长使用正则表达式来理解如何添加“+”句柄
- 10袋->[“10”,“袋”]
- 10磅->[“10”,“磅”]
- 10磅橡木[“10”,“磅](我不需要最后一部分)
- 10克[“10”,“g”]
- 10磅木材+8块木板+1个螺丝[“10”,“磅”,“8”,“1”]
我想您正在寻找这种模式:
\d+(\s(袋子|磅|克|千克|磅|盎司|毫克|毫升))?
以一个数字开头,后面可能跟一个空格和一些单词,比如
如:行李
,磅
,g
,kg
,磅
,oz
,盎司
,mg
,ml
var模式=/\d+(\s(袋重|磅|克|千克|磅|盎司|克|毫克|毫升))?/g;
控制台。日志(“10包”。匹配(模式));
控制台日志(“10磅”。匹配(模式));
控制台。原木(“10磅橡木”。匹配(图案));
控制台日志(“10g”。匹配(模式));
控制台。原木(“10磅木材+8块木板+1个螺丝”。匹配(图案))
您的正则表达式与10个包中的10 b
不匹配。这很好,只需添加| bags?
备选方案,请参见(\d*\?\d+)\s*(lbs?| g | kgs?| lbs?| oz |盎司?| m[gl]| bags?\b
)正则表达式非常适合从正则字符串中提取文本。。。我感觉你的输入字符串太不规则了,无法用正则表达式进行可靠的解析-我感觉无论我们想出什么,你都会有一个输入字符串在某个时候破坏它。问题是标记了PHP,而不是Javascript。@Toto我不是说你可以用Javascript做到这一点,我是说我想你在找这个pattern@Toto正则表达式模式是个例外,我不同意。然而,您的输出并不是想要的。例如,第一个结果应该是:[“10”,“bags”]
@Toto好吧,我只是根据一行猜测模式。我发现了类似的东西,但我不擅长使用由OP发布的regex
。
'/(\d*\.?\d+)\s*(lbs?|g|kgs?|pounds?|oz|ounces?|g|mg|ml)\b/'