[英]Regex Pattern Matching Concatenationn
我试图在我的解决方案中找到一些编码风格模式。 用例是我必须用 razor 中的StringBuilder
替换所有字符串连接,并在JavaScript
找到所有字符串连接。 我发现很难通过以下两种方式获得所有具有字符串连接的代码行。
1) str = str+str2+str3+"str4 " etc;
2) str+=str2+str3+"str4 " etc;
我尝试使用 VS 2013 的查找工具并使用字符+
搜索,我得到了很多行。 请帮我上面2种代码行的reg ex模式,所以至少行数会减少。 我发现很难为上述 2 种代码风格获得 Reg Ex。
([\w_]+[\w\d]*)(?:\s*=\s*\1{1}\s*\+\s*|\s*\+=\s*)("?[\w_]+[\w\d]*"?)(\s*\+\s*"?([\w_]+[\w\d]*"?))*;
在这里,我假设变量可能以下划线或字母字符开头。 如果需要,您可能需要对其进行一些更改。
也许是这样的:
(\w+ = \w+\+\w)|(\w+\s?\+=\s?\w+)
请记住变量名称可以以_
或[A-Za-z]
开头的变量命名约定,此正则表达式匹配所有此类连接实例。
正则表达式: ([A-Za-z_]\\w+)\\s*\\+?=\\s*(\\1\\s*)?(\\+?\\s*(([A-Za-z_]\\w+)|"?.*?"?))*;
解释:
([A-Za-z_]\\w+)
匹配以_
或[A-Za-z]
开头后跟word
的任何字符的变量名称。
\\s*\\+?
可选的whitespace
和+
以匹配速记连接运算符。
\\s*(\\1\\s*)?
如果不使用速记运算符,则这将匹配传统的连接方式。
(\\+?\\s*(([A-Za-z_]\\w+)|"?.*?"?))*
必须存在的后继变量名。 这些可能是零或许多。 这也可以是像"hello world"
这样的文字字符串,也可以匹配HTML data 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.