Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 带反斜杠的正则表达式问题_Regex_Autoit - Fatal编程技术网

Regex 带反斜杠的正则表达式问题

Regex 带反斜杠的正则表达式问题,regex,autoit,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”可以替换为任何文本字符串。所有内容都不区分大小写。我目前正在使用

我在一个简单的正则表达式捕获方面遇到了麻烦。我正在使用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”部分。如何拾取它前面的文本字符串

(?i)\\\\(.+\\\\(abc\d+)|(def\d+)|(ghi\d+))
如果你想在一个字符串中完成所有操作(中间有一个
\

如果需要两个单独的捕获:

(?i)\\\\(.+)\\\\((abc\d+)|(def\d+)|(ghi\d+))
编辑:新版本


原始正则表达式是
\b(\d+)\\(?:abc | def | ghi)\d+
。转义字符串是
\\b(\\d+\\\\(?:abc | def | ghi)\\d+
当下面的正则表达式用于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)
#包括
$string='U:\some text here\more text here\06-17-2011\Folder 2\161804\abc9831\xyz10007569.JPG'
$capture=StringRegExp($string,'.\\\\([^\\]+\\[a-z]{3}\d+\\\\\\.',1)
_ArrayDisplay($capture)

在问了9个问题后,我们希望您了解格式化的基本知识。请格式化您的问题以提高可读性。@darkdust,当我在我的原始文章中使用双斜杠时,它们在下面的预览窗口中显示为单斜杠。这就是为什么我用了4个斜杠。这就是你的意思吗?不,我的意思是缩进正则表达式,使其显示为代码。Amber这样做是为了你的孩子。下次请尽量把它格式化得更好,谢谢。好的,谢谢你让我知道。不,这还是abc9831。也许这是一个特定于autoit的正则表达式问题?@sigil,我添加了转义形式。这符合你的需要吗?不,那没有从字符串中捕获任何内容。看起来您的模式正在尝试捕捉“abc9831”,然后再捕捉后面的文本;我正在尝试获取“abc9831”及其前面的文本。在任何情况下,该模式都不会返回任何匹配项。@sigil。我加了一个新的。它使用单词边界
\b
来检测161804的开头,但您也可以使用正向查找:
(?)?