我正在尝试使用regexpressions匹配字符串中的某些数字,并且语法有困难

时间:2010-05-03 17:09:24

标签: regex

这是我正在尝试解析的行

[\\?\Volume{d3f7f470-526b-11df-92eb-001a647802d2}\] 85 90 NotFound

我基本上只是试图获取括号之外的数字并忽略括号之间的任何内容。

我的原始语法有效,直到我意识到括号中有时会有数字(我只是使用“([0-99] {2})”)

任何帮助将不胜感激。

由于

5 个答案:

答案 0 :(得分:3)

.*\] (\d+) (\d+)
  1. .*将直接到字符串
  2. 的末尾
  3. \]将回溯至结束方括号
  4. (\d+)将匹配第一个数字(如果您只想要2个数字,请使用\d{2}
  5. (\d+)将匹配第二个号码

答案 1 :(得分:2)

假设Perl兼容的正则表达式:

`(?<=[\]\d] )(\d{2})(?= )`

这匹配两个数字,前面是]或数字,然后是空格,后跟空格。它也不会占用空间,因此您可以匹配两个字符串,例如全局替换操作。如果你想匹配所有数字(并假设只有两个,根据定义):

`\] (\d{2}) (\d{2}) `

(在这种情况下不再需要环顾四周的断言。)

答案 2 :(得分:1)

使用积极的后视构造(寻找]):

(?<=].*)(\d{2})

它将完全匹配两次:8590

答案 3 :(得分:0)

/\b(\d{2})\b(\d{2})\b/

然后,您可以在正在使用正则表达式的任何环境中提取数字。

答案 4 :(得分:0)

因为vbscript对正则表达式如此挑剔我最终做的是匹配括号\[(.*)\]之间的所有内容,对字符串进行替换以完全摆脱它们然后使用正则表达式\d+来抓取剩下的数字。