我正在使用以下正则表达式来跟随下面的文本
正则表达式:[\s](rs|price)?([\s.]*\d+[\s\d.]*)(pkg|k|(?:la(?:c|kh|k)|crore|cr)s?|l)[\s.]
文本:
65 lac this is 55 lac. and more price 100 lac. randome text to test price45 crs. and 65 cr and to test its matching rs 3244 k like rs 55k. to its matchibg 65 cr. but not 65 cr als not matching price 123 lac more of it 55 crs.
它不符合上面提到的所有价格但只有少数。我匹配的价格在价格正则表达式完全匹配之前和之后有空格。
我在最后添加了[\s.]
以匹配价格也结束了。并且它之后有空格。例如55 crs。或24紫胶。同样地,我添加'[\ s]'来匹配那些在匹配价格之前有空间的价格。
输出:
https://regex101.com/r/iHamwk/1/
示例输出2: https://regex101.com/r/h8NLhr/5
示例输出3:https://regex101.com/r/h8NLhr/8
我该如何修改上面的正则表达式?
另外如何提取匹配价格只排除前后空格?
谢谢。
如果您想匹配价格,可以使用替换来匹配不同的格式。为了确保交替中的前导数字和值不是较长匹配的一部分,您可以使用word boundary \b
。要匹配可选点,您可以添加\.?
\b\d+\s*(?:lac|crs?|k)\b\.?
这将匹配:
\b
字边界\d+
匹配一个或多个数字\s*
匹配空白字符的零次或多次(或使用[ ]*
匹配空白的零次或多次。方括号不是必需的,但这些只是为了可读性)(?:lac|crs?|k)
与lac,cr,crs或k匹配的交替\b
字边界\.?
匹配一个可选的点