反斜杠的正则表达式问题

时间:2011-06-24 16:24:28

标签: regex autoit

我在看似简单的正则表达式捕获方面遇到了麻烦。我正在使用AutoIt的stringRegExp()函数。

源字符串是:

1 U:\some text here\more text over here\06-17-2011\Folder 2\161804\abc9831\xyz10007569.JPG

我正在尝试捕获“abc9831”和“161804”。 “abc”部分可以是“abc”,“def”或“ghi”,后跟一串数字。 “161804”可以替换为任何文本字符串。一切都是不区分大小写的。我目前正在使用以下正则表达式模式:

(?i)\\\\.+\\\\((abc\d+)|(def\d+)|(ghi\d+))

但它只捕获了“abc9831”部分。如何获取前面的文本字符串?

3 个答案:

答案 0 :(得分:0)

(?i)\\\\(.+\\\\(abc\d+)|(def\d+)|(ghi\d+))
如果你想把它全部放在一个字符串中(中间有一个\),

应该可以做到这一点。

如果您想要两个单独的捕获:

(?i)\\\\(.+)\\\\((abc\d+)|(def\d+)|(ghi\d+))

答案 1 :(得分:0)

编辑:新版本......

原始正则表达式为\b(\d+)\\((?:abc|def|ghi)\d+)。转义字符串为\\b(\\d+)\\\\((?:abc|def|ghi)\\d+)

答案 2 :(得分:0)

当在AutoIt的StringRegExp()函数中使用下面的正则表达式时(使用标志“1”返回匹配数组),它返回161804\abc9831。这是你想要回归的吗?

.*\\([^\\]+\\[a-z]{3}\d+)\\.*

以下是您可以自己运行的示例:

#include <Array.au3>

$string = 'U:\some text here\more text over here\06-17-2011\Folder 2\161804\abc9831\xyz10007569.JPG'

$capture = StringRegExp($string,'.*\\([^\\]+\\[a-z]{3}\d+)\\.*',1)

_ArrayDisplay($capture)