我正在使用regex解析“velocity”值。你知道吗
当两个值都存在于组中时,我能够做到这一点-实际值和给定值(如ex1所示)。但当速度值不存在于“实际值”中,而只存在于“给定值”中时。你知道吗
我的正则表达式正在从中获取价值。!你知道吗
如果“实际值”中不存在默认值,如何添加该值,并在新行开始之前结束搜索。你知道吗
actual values[\w\W]*?[vV]elocity XYZ\D+ [\w\W]*?(.+)
例1:
正则表达式工作得很好,给了我所有的组。你知道吗
----- actual values
Machine XYZ [mm]: 855.7766 -2578.3709 -1001.7072
velocity XYZ [mm]: -.0002 .2765 .0050
----- given values
Machine XYZ [mm]: 855.7745 -2580.1412 -1001.7041
velocity XYZ [mm/s]: -.0522 -60.0000 .0648
例2:
正则表达式解析给定值中的值,尽管实际值中没有任何速度。你知道吗
----- actual values
Machine XYZ [mm]: 855.7766 -2578.3709 -1001.7072
val XYZ [mm]: -.0002 .2765 .0050
----- given values
Machine XYZ [mm]: 855.7745 -2580.1412 -1001.7041
velocity XYZ [mm/s]: -.0522 -60.0000 .0648
您可以检查下一行是否不是空行,或者是否以
velocity
开头,使用负的lookahead(?!
\bactual values.*
匹配实际值和行的其余部分(?:
非捕获群\r?\n
匹配换行符(?!
负面展望,断言右边的不是[^\S\r\t]*(?:[Vv]elocity|$)
匹配0+个不带换行符的空白,并匹配速度或字符串结尾)
关闭负面展望.*
匹配除换行符以外的任何字符0+次)*
关闭非捕获组,重复0+次\r?\n.*
将换行符与除换行符以外的任何字符进行0+次匹配[vV]elocity XYZ[^\d\r\n]+
匹配velocity XYZ
和1+次不是数字或换行符(.*)
捕获组1,匹配除换行符以外的任何字符0+次Regex demo
您还可以更具体地匹配组1中的数字,而不是使用
.*
Regex demo
相关问题 更多 >
编程相关推荐