这是我正在尝试解析的行
[\\?\Volume{d3f7f470-526b-11df-92eb-001a647802d2}\] 85 90 NotFound
我基本上只是试图获取括号之外的数字并忽略括号之间的任何内容。
我的原始语法有效,直到我意识到括号中有时会有数字(我只是使用“([0-99] {2})”)
任何帮助将不胜感激。
由于
答案 0 :(得分:3)
.*\] (\d+) (\d+)
.*
将直接到字符串\]
将回溯至结束方括号(\d+)
将匹配第一个数字(如果您只想要2个数字,请使用\d{2}
)(\d+)
将匹配第二个号码答案 1 :(得分:2)
假设Perl兼容的正则表达式:
`(?<=[\]\d] )(\d{2})(?= )`
这匹配两个数字,前面是]
或数字,然后是空格,后跟空格。它也不会占用空间,因此您可以匹配两个字符串,例如全局替换操作。如果你想匹配所有数字(并假设只有两个,根据定义):
`\] (\d{2}) (\d{2}) `
(在这种情况下不再需要环顾四周的断言。)
答案 2 :(得分:1)
使用积极的后视构造(寻找]
):
(?<=].*)(\d{2})
它将完全匹配两次:85
和90
答案 3 :(得分:0)
/\b(\d{2})\b(\d{2})\b/
然后,您可以在正在使用正则表达式的任何环境中提取数字。
答案 4 :(得分:0)
因为vbscript对正则表达式如此挑剔我最终做的是匹配括号\[(.*)\]
之间的所有内容,对字符串进行替换以完全摆脱它们然后使用正则表达式\d+
来抓取剩下的数字。