繁体   English   中英

正则表达式模式匹配串联

[英]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]*"?))*;

在这里,我假设变量可能以下划线或字母字符开头。 如果需要,您可能需要对其进行一些更改。

https://regex101.com/r/mE9zO7/2

也许是这样的:

(\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

Regex101 演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM