Php 为什么';这个贪婪的正则表达式不是如预期的那样工作吗?
我正在学习一些关于正则表达式的知识,有人能解释一下这里发生了什么吗?并给出一个提供预期输出的正则表达式的例子?谢谢Php 为什么';这个贪婪的正则表达式不是如预期的那样工作吗?,php,regex,Php,Regex,我正在学习一些关于正则表达式的知识,有人能解释一下这里发生了什么吗?并给出一个提供预期输出的正则表达式的例子?谢谢 input data = 'Sometext|even more text' regex = '(.*)?\|?.*' replacement = '$1' expected output = 'Sometext' actual output = 'Sometext|even more text' PHP (.*)是贪婪的,所以匹配所有内容$1就是一切 您可能正在寻找:
input data = 'Sometext|even more text'
regex = '(.*)?\|?.*'
replacement = '$1'
expected output = 'Sometext'
actual output = 'Sometext|even more text'
PHP
(.*)
是贪婪的,所以匹配所有内容<代码>$1就是一切
您可能正在寻找:
/^([^|]*).*$/
(.*)
是贪婪的,所以匹配所有内容<代码>$1就是一切
您可能正在寻找:
/^([^|]*).*$/
您的正则表达式是“所有字符,后跟可选的|
,后跟0个或更多字符”
将首字母(.*)
更改为([^\|]*)
,或者将|
设置为非可选。您的正则表达式是“所有字符,后跟可选的|
,后跟0个或更多字符”
将首字母
(.*)
更改为([^\|]*)
,或者将|
设置为非可选。*
是贪婪的,这意味着它将尝试匹配尽可能多的文本。在这种情况下:
将匹配所有文本(.*)
将匹配“rest”(空字符串)\ |?.*
try:
regex='\\\.[^ |]*',replacement='
*
是贪婪的,这意味着它将尝试匹配尽可能多的文本。在这种情况下:
将匹配所有文本(.*)
将匹配“rest”(空字符串)\ |?.*
尝试:
regex='\\\.[^ |]*',replacement='
如果您将regex更改为(\w+)\ \124?.
,特别是在\w
之后添加+
,那么您将得到预期的“Sometext”答案
使整个字符串匹配的原因是第一个
*
与整个字符串匹配。通过上面的更改,您将匹配任何单词字符。如果您将正则表达式更改为(\w+)\ \124;?.
,特别是在\w
之后添加+
,那么您将得到预期的“Sometext”答案
使整个字符串匹配的原因是第一个
*
与整个字符串匹配。通过上面的更改,您将在任何单词字符上进行匹配。请同时添加PHP代码。\\\\\\?
还使竖条可选。请同时添加PHP代码。\\\\\\?
还使竖条可选。非贪婪(.*)看起来会是什么样子?@netbrain:(.*)
但最好避免使用“匹配所有”操作符,而是像@hakre那样排除不想匹配的字符。通过添加一个?
使其不贪婪。但是,我编辑了答案,因为您不想理解,只想拥有代码;)我想知道这个[^ |]
到底是做什么的?匹配到|?之前的所有字符,非贪婪(.*)会是什么样子?@netbrain:(.*)
,但最好避免使用“全部匹配”运算符,而是像@hakre那样排除不想匹配的字符。通过添加?
使其成为非贪婪的。但是,我编辑了答案,因为您不想理解,只想拥有代码;)我想知道这个[^ |]
到底是做什么的?匹配到|为止的所有内容?