我有一些代码,例如:
if('hello' == 2 && 'world' !== -1){
return true;
}
我在匹配if
语句中的条件时遇到了一些问题。我想到的第一个正则表达式是/'.*'/
,但这匹配:
- '你好'
- ' == 2 && '
- '世界'
这不是我所希望的。我只想匹配单引号和里面的文字。
- '你好'
- '世界'
任何机构有任何想法?
我有一些代码,例如:
if('hello' == 2 && 'world' !== -1){
return true;
}
我在匹配if
语句中的条件时遇到了一些问题。我想到的第一个正则表达式是/'.*'/
,但这匹配:
这不是我所希望的。我只想匹配单引号和里面的文字。
任何机构有任何想法?
两个匹配的组 int this 应该会选择您引用的值:
^.*(\'.*?\').*(\'.*?\').*$
对于您的具体情况
\'[a-z]*?\'
对于整个代码,如果引号中有大写字符,则可以使用
\'[a-zA-Z]*?\'
但是,如果引号中也有特殊字符,那么您可以使用@Chris Cooper 建议的内容。根据您的需要,有多种可能的答案。
笔记: '?' after * 使得 * 不贪婪,所以它不会尝试搜索直到最后一个报价。
您使用哪种正则表达式方法来获得答案也很重要。
试试这个
preg_match_all('/\'[^\'\r\n]*\'/m', $subject, $result, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($result[0]); $i++) {
# Matched text = $result[0][$i];
}
解释
"
' # Match the character “'” literally
[^'\\r\\n] # Match a single character NOT present in the list below
# The character “'”
# A carriage return character
# A line feed character
* # Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
' # Match the character “'” literally
"
这就是我想出的!
preg_match_all("#'[^'\n\r]*'#", $subject, $matches);
'
。'
、换行或回车的字符。'
。没有所有的转义,我认为它更具可读性——无论如何,它是一个正则表达式。