我目前有一个正则表达式,适用于某些类型的输入。
Reg Ex: (.*)\s*PER\s*([^\s]+).*
采样输入1:1.0 PER采样死区1
输出:
匹配组1:1.0
匹配组2:样本
样例输入2:1.0 PER Request DEAD VOLUME 1
输出:
匹配组1:1.0
匹配组2:请求
现在,我需要修改正则表达式,使其也适用于如下所示的输入。
输入1:10.0 PER空孔在列DEAD VOLUME 10
预期产量:
匹配组1:10.0
匹配组2:空井
匹配组3:列
输入2:8.0 PER空井入行死体积8
预期产量:
匹配组1:8.0
匹配组2:空井
匹配组3:行
我找到了一个正则表达式,可以成功处理第二种类型的输入。
正则表达式: (.*)\s*PER\s*(.*)\s*In\s*(.*)\s*DEAD\s*.*
有没有办法我可以使这两种输入类型都可以使用的正则表达式
更新:
嗨,您只需要更多帮助...我忘了再提一个条件...此reg也需要为以下输入工作。
表示DEAD VOLUME部分是可选的。
这可能吗???
您可以使用带有点延迟匹配的可选组:
^([\d.]+)\s+PER\s+(.*?)(?:\sIn\s*(.+?))?(?:\s*DEAD.*)?$
观看此正则表达式演示
火柴:
1.0 PER Sample DEAD VOLUME 1
1.0
Sample
1.0 PER Request DEAD VOLUME 1
1.0
Request
10.0 PER Empty Well In Column DEAD VOLUME 10
10.0
Empty Well
Column
8.0 PER Empty Well In Row DEAD VOLUME 8
8.0
Empty Well
Row
说明:
^
-字符串开始([\d.]+)
-组1捕获任何1个以上的数字或点\s+
-1+空格PER
-文字 PER
\s+
-1+空格(.*?)
-组2捕获除换行符以外的任何0+字符,直到第一个字符为止...(?:\sIn\s*(.+?))?
-1个或0个序列:
\sIn
-空格后跟In
文字\s*
-零个或多个空格(.+?)
-第3组捕获一个或多个除换行符以外的其他字符,直到第一个字符为止...(?:\s*DEAD.*)?
-可选的组匹配:
\s*
-0+空格DEAD
-文字 DEAD
.*
-除换行符以外的任意0+个字符,最多不超过 $
-字符串($
)的末尾。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句