我正在尝试使用正则表达式在以mySqlQueryToArray(对SQL DB进行查询的函数)开头的行中的任何地方查找单引号(以便将其全部转换为双引号)。我正在Sublime Text 3中做正则表达式,我敢肯定使用Perl Regex。我想让我的正则表达式与一行中的每个单引号匹配,例如,我可能有一行:
mySqlQueryToArray($con, "SELECT * FROM Template WHERE Name='$name'");
我希望正则表达式在该行中匹配
$name
的两个引号,但该行中没有其他字符。我一直在尝试使用(?<=mySqlQueryToArray.*)'
,但它告诉我断言的外观无效。我也尝试过(?<=mySqlQueryToArray)(?<=.*)'
,但这也是无效的。有人可以指导我使用正则表达式来满足我的需要吗? 最佳答案
https://stackoverflow.com/a/25331428/3933728是一个更好的答案。
我对RegEx和ST不够好,无法一步一步地做到这一点。但我可以做到以下两点:
1 /搜索所有mySqlQueryToArray
字符串
打开搜索面板:⌘F或Find->Find...
确保已选择正则表达式(.*
)按钮(左下方)和换行选择器(所有其他选项都应关闭)
搜索:^\s*mySqlQueryToArray.*$
^
行\s*
任何缩进mySqlQueryToArray
您的 call .*
背后$
行尾点击
Find All
这将选择每次要修改的内容。2 /进入替换模式
⌥⌘F或
Find->Replace...
这次,请确保包装,正则表达式和选择处于 Activity 状态。他们搜索
'([^']*)'
并替换为"\1"
。'
是您的单引号(...)
是捕获块,由替换字段\1
引用[^']*
适用于不是单引号的任何字符,重复然后点击
Replace All
我知道这比另一个答案要复杂一点,但是这解决了您的行包含多个单引号字符串的情况。像这样:
mySqlQueryToArray($con, "SELECT * FROM Template WHERE Name='$name' and Value='1234'");
如果这太多了,我猜像是find:
(?<=mySqlQueryToArray)(.*?)'([^']*)'(.*?)
并将其替换为\1"\2"\3
就足够了。关于regex - 在以“mySqlQueryToArray”开头的行末查找单引号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25329624/