我试图在供应商应用程序中提出一个RegEx(类似于POSIX),它返回如下图所示的数据并一次显示一行数据,因此我不需要考虑多行并且需要单独匹配一行。
它可以在字符串结果
中返回一个或多个值应用程序不允许我使用"\d+\.\d+"
从字符串中捕获组件,我需要将一行数据的所有组件映射到变量,即使我要去丢弃它或以其他方式返回否定匹配结果。
我的数据如下所示,带有奇怪的下划线填充。
USER | ___________ 3.58625 | ___________ 7.02235 |
USER | ___________ 10.02625 | ___________ 15.23625 |
语法是支持的
Matches REGEX "(Var1 Regex), (Var2 Regex), (Var3 Regex), (Var 4 regex), (Var 5 regex)"
并且整个字符串必须与RegEx组件的聚合匹配,关闭一个字符并且什么也得不到。
" |"字符是数据的字段分隔符。
所以在上面我需要的是一个RegEx,它将它带到数字的开头并将其放在Var1中,然后在var 2中捕获带小数点的数值,然后捕获到Var中的下一个数字3,然后将数字保存在var 4中,然后捕获空格和结束字段|只有Var 2和4才有用,但我必须捕获整个字符串。
我主要尝试在酒吧之间捕捉" |"使用此question中的^.*\|(.*).\|*$
。
我还尝试了this question中提到的多变量([0-9]+k?[.,]?[0-9]+)\s*-\s*.*?([0-9]+k?[.,]?[0-9]+)
。
当我尝试通过RegExr使用它时,我似乎错过了一些正确的东西,我觉得我错过了一些非常简单的东西。
在RegExr中,我从来没有得到字符串的一个以上的部分我只得到数字,相当于单个变量中的整个字符串,或者只是在这个上下文中不能完成的数字来实现要求的目标。
文档提供的唯一示例如下所示,类似于本例中的SysLog条目,我在那里使用"使用资源名称进行合并:磁盘特定问题:脱机"
WHERE值匹配正则表达式"(。)资源名称:(。),具体问题:([^,] ),(。)&# 34; SET _Rrsc = var02 SET _Prob = var03
我已经将我的轮子旋转了几个小时,所以非常感谢任何指导/帮助让我超越这个驼峰。
答案 0 :(得分:2)
Something like this should work:
(\D+)([\d.]+)(\D+)([\d.]+)(.*)
或者用普通话说:Capture everything but numbers
,capture a decimal number
,capture everything but numbers
,capture a decimal number
,capture everything
。
使用USER | ___________ 10.02625 | ___________ 15.23625 |
USER | ___________
10.02625
| ___________
15.23625
|