[英]Parsing units with javascript regex
假设我有一个字符串,其中包含我想要分成单个单元的一些单元(可能有也可能没有前缀)。 例如,字符串可以包含“Btu(th)”或“Btu(th).ft”或甚至“mBtu(th).ft”,其中mBtu(th)是标准化单位毫升热化学BTU(这纯粹是一个例子) 。
我目前有以下(简化)正则表达式,但它失败的情况“mBtu(th).ft”:
/(m|k)??(Btu\(th\)|ft|m)(?:\b|\s|$)/g
目前,这并未正确检测'Btu(th)'的结尾与'ft'的开头之间的边界。 我理解javascript正则表达式不支持回顾所以如何准确地解析字符串?
单词边界不会分隔两个非单词字符。 因此,您实际上并不需要单词边界,因为括号和句点不是有效的单词字符。 相反,您希望字符串后面没有单词字符,因此您可以使用它:
[mk]??(Btu\(th\)|ft|m)(?!\w)
我相信你是在追求这样的事情。 如果我理解你正确想要匹配任何类型的元素,可能在m
或k
字符之前,并用parantheses或点分隔。
/[\s\.\(]*(m|k?)(\w+)[\s\.\)]*/g
https://regex101.com/r/eQ5nR4/2
如果你不关心是否能够匹配括号,只需返回你可以做的元素
/(m|k?)(\w+)/g
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.