[英]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.