正则表达式不匹配字符串中的双引号(只是单引号)
Regex not matching double quotations in string (just single quotations)
我写了这个正则表达式来匹配翻译字符串。一切正常,除了它只匹配字符串中的单引号 ''
,尽管我已经写了几个规则来匹配单引号和双引号。
这是我的正则表达式规则:
(Yii::t\()(\'|\")(.*?)(\'|\")\,(\'|\")(.*?)(\'|\")\)
正如预期的那样 (\'|\")
应该匹配两者,但它不匹配。
我也试过以下规则:
('|")
(['"])
示例:
成功匹配这些:
Yii::t('backend','My Profile')
Yii::t('backend','Log Out')
不符合这些:
Yii::t("backend", "Search...")
Yii::t("backend", 'Sounds')
我用来匹配正则表达式的代码:
re := regexp.MustCompile(`(Yii::t\()(\'|\")(.*?)(\'|\")\,(\'|\")(.*?)(\'|\")\)`)
matches := re.FindAllString(line, -1)
更新:
问题是因为一些字符串包含空格(不是因为引号)。
试试这个正则表达式:
Yii::t\((?:['"][^'"]*['"],?\s*)*\)
解释:
Yii::t\(
- 按字面意思匹配 Yii::t(
(?:['"][^'"]+['"],?\s*)*\)
['"]
- 匹配 '
或 "
[^'"]*
- 匹配 0+ 次既不是 '
也不是 "
的任何字符
['"]
- 匹配单次出现的 '
或 "
,?
- 匹配 0 次或 1 次出现的 ,
\s*
- 匹配出现 0 次以上的空格
*
- 最后一个*
匹配上面5个子模式0+次
\)
- 按字面意思匹配 )
备选方案:
这个 RegEx 匹配所有内容:
(Yii::t\(\s*)(\'|\")(.*?)(\'|\")\,\s*(\'|\")(.*?)(\'|\")\)
试试这个正则表达式,它匹配所有内容:
Yii::t\(('|")(.*)(\'|\"),('|[ ]("|'))(.*)('|")\)
Click here for output !
我写了这个正则表达式来匹配翻译字符串。一切正常,除了它只匹配字符串中的单引号 ''
,尽管我已经写了几个规则来匹配单引号和双引号。
这是我的正则表达式规则:
(Yii::t\()(\'|\")(.*?)(\'|\")\,(\'|\")(.*?)(\'|\")\)
正如预期的那样 (\'|\")
应该匹配两者,但它不匹配。
我也试过以下规则:
('|")
(['"])
示例:
成功匹配这些:
Yii::t('backend','My Profile')
Yii::t('backend','Log Out')
不符合这些:
Yii::t("backend", "Search...")
Yii::t("backend", 'Sounds')
我用来匹配正则表达式的代码:
re := regexp.MustCompile(`(Yii::t\()(\'|\")(.*?)(\'|\")\,(\'|\")(.*?)(\'|\")\)`)
matches := re.FindAllString(line, -1)
更新: 问题是因为一些字符串包含空格(不是因为引号)。
试试这个正则表达式:
Yii::t\((?:['"][^'"]*['"],?\s*)*\)
解释:
Yii::t\(
- 按字面意思匹配Yii::t(
(?:['"][^'"]+['"],?\s*)*\)
['"]
- 匹配'
或"
[^'"]*
- 匹配 0+ 次既不是'
也不是"
的任何字符
['"]
- 匹配单次出现的'
或"
,?
- 匹配 0 次或 1 次出现的,
\s*
- 匹配出现 0 次以上的空格*
- 最后一个*
匹配上面5个子模式0+次\)
- 按字面意思匹配)
备选方案:
这个 RegEx 匹配所有内容:
(Yii::t\(\s*)(\'|\")(.*?)(\'|\")\,\s*(\'|\")(.*?)(\'|\")\)
试试这个正则表达式,它匹配所有内容:
Yii::t\(('|")(.*)(\'|\"),('|[ ]("|'))(.*)('|")\)
Click here for output !