Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 - Fatal编程技术网

Regex 与';匹配的正则表达式';

Regex 与';匹配的正则表达式';,regex,Regex,可能重复: 我试图弄清楚如何解析出括号内的文本,但在语句中的单引号之间。例如,如果我有以下陈述: (I have a 'cat', 'hat'); 我希望结果是 cat hat 我尝试了维基百科()中定义的不同元字符,终于找到了答案,但我仍然很难理解它为什么有效 我试过:\'(.*)\' 我对这个正则表达式的理解是:我想得到单引号“之间的字符,并且这些字符匹配任何单个字符零次或多次* 这导致: cat', 'hat cat hat 在玩了一堆正则表达式之后,我最终意外地得到了这样一个结

可能重复:

我试图弄清楚如何解析出括号内的文本,但在语句中的单引号之间。例如,如果我有以下陈述:

(I have a 'cat', 'hat');
我希望结果是

cat
hat
我尝试了维基百科()中定义的不同元字符,终于找到了答案,但我仍然很难理解它为什么有效

我试过:
\'(.*)\'

我对这个正则表达式的理解是:我想得到单引号
之间的字符,并且这些字符匹配任何单个字符
零次或多次
*

这导致:

cat', 'hat
cat
hat
在玩了一堆正则表达式之后,我最终意外地得到了这样一个结果:
\'(.*)\

这导致:

cat', 'hat
cat
hat

为什么这样做有效?(特别是我不明白“?”是如何工作的。)

什么时候*后面跟着?这将使*在惰性模式下匹配。默认情况下,它是贪婪的:尽可能多地吸收匹配的字符。在惰性模式下,它会尽可能早地继续模式的其余部分


一开始就搞错了。现在更正。

什么时候*后跟?这将使*在惰性模式下匹配。默认情况下,它是贪婪的:尽可能多地吸收匹配的字符。在惰性模式下,它会尽可能早地继续模式的其余部分


一开始就搞错了。现在更正。

默认情况下,正则表达式是贪婪的。通过使用问号,您正在将匹配更改为“惰性”模式。这意味着它匹配尽可能少的字符数。

默认情况下,正则表达式是贪婪的。通过使用问号,您正在将匹配更改为“惰性”模式。这意味着它匹配尽可能少的字符数。

这是因为

()是对您的结果进行分组(这是您希望作为返回得到的结果)

与一切匹配

*让匹配出现0次或更多次

是可选的,因此,ab?将使用案例aab

最后,
(.*?
将匹配所有内容,但只匹配一次(
工作)或匹配所有内容0次或多次(
*
工作)。

这是因为

()是对您的结果进行分组(这是您希望作为返回得到的结果)

与一切匹配

*让匹配出现0次或更多次

是可选的,因此,ab?将使用案例aab


最后,
(.*?
将匹配所有内容,但只匹配一次(
工作)或所有内容0次或多次(
*
工作)。

正则表达式的默认行为使字符串中的尽可能长的匹配。这被称为“贪婪”

正确的说法是,
通常只意味着匹配前面的项(例如,字符)一次或多次,但
*?
是一种称为“惰性星”的特例,它将正则表达式计算器切换到“惰性”模式。在这种模式下,计算器首先尝试跳过前面的项目(并在没有它的情况下完成匹配),然后再“返回”它

最终结果正如您所观察到的:它将匹配满足搜索条件的较短字符串,而不是(默认值),从而只找到可能最长的匹配


测试正则表达式的一个方便资源是,对各种选项(包括懒星)的一个很好的描述是。

正则表达式的默认行为,使字符串中的尽可能长的匹配。这被称为“贪婪”

正确的说法是,
通常只意味着匹配前面的项(例如,字符)一次或多次,但
*?
是一种称为“惰性星”的特例,它将正则表达式计算器切换到“惰性”模式。在这种模式下,计算器首先尝试跳过前面的项目(并在没有它的情况下完成匹配),然后再“返回”它

最终结果正如您所观察到的:它将匹配满足搜索条件的较短字符串,而不是(默认值),从而只找到可能最长的匹配


测试正则表达式的一个方便资源是,对各种选项(包括lazy star)的一个很好的描述是。

相反。添加?使它懒惰。接近,但实际上相反。相反。添加?使它懒惰。接近,但实际上相反,特别是“懒惰而不是贪婪”部分,特别是“懒惰而不是贪婪”部分需要注意的是,并非所有正则表达式方言都支持懒惰量词;特别是,POSIX和GNU(无论是基本形式还是扩展形式)或XML模式正则表达式都不支持它,需要注意的是,并非所有正则表达式方言都支持惰性量词;特别是,POSIX和GNU(既不是基本形式,也不是扩展形式)和XML模式正则表达式都不支持它