我写了一个正则表达式:
\s*\$\d+\,?\.?\d*\,?\d*[mkb]?\s*
此正则表达式提取$100
,$1k
,$1m
或$1b
等字符串。
它工作正常,但现在我需要它返回$1mm
如果字符串中有$1mm
,而不仅仅$1m
是$1mm
的一部分。
答案 0 :(得分:1)
您可以使用
'~\s*\$\d[,.\d]*(?:mm|MM|[mkbMKB]?)\b\s*~'
请参阅regex demo。
模式详情
\s*
- 0+ whitespaces \$
- $
符号\d
- 1位[,.\d]*
- 0位数,,
或.
字符(?:mm|MM|[mkbMKB]?)
- mm
,MM
或不区分大小写k
,m
或b
或空字符串\b
- 字边界\s*
- 0+空格。