我知道以前曾经问过这个问题,但是当我搜索时,我被埋没了大量无法帮助的答案。
我正在使用visual studio将旧语言的代码转换为C#。我可以使用Regex来完成我需要做的大部分工作。
旧语言没有使用语句终止符。因此,我需要在DOESNT以//,foreach,if,switch,case等开头的每一行中添加一个(并且不是空白)。
这是我下次完成并修复通用搜索/替换无法处理的所有代码之前剩下的唯一步骤。
无论如何,考虑到VS正则表达式搜索/替换选项,您建议使用什么语法基本上选择不具有这些关键字的每一行并将\ r \ n替换为\ r \ n?
所有我需要的是一个解决这个问题的答案的链接,但正如我所说,到目前为止,我已经找到了一堆答案,差不多,但并不是这样做。
虽然我对基本的正则表达式感到满意,但我仍然在努力解决一些很酷的功能(前瞻/后退等等)。因此,如果答案需要这样的方法,那么也会理解为什么使用这种方法的简要说明。
到目前为止,我一直在尝试基于使用^的选项 - 例如在[^(if | foreach | xxx)],但是不能选择不具备这些选项的行(至少不正确。)
非常感谢您的帮助!
答案 0 :(得分:1)
在VS S& R中,您可以使用以下内容:
^
\s*
匹配(注意它不会与VS中的换行符匹配)//
- 文字双斜线,(?:foreach|if|switch|case)\b
- 整个字foreach
,if
,swtich
和{ {1}} case
$
匹配任意1个字符。.+
固定在开始时(即(?!...)
之后)的模式开始。将它们组合成1个表达式:
^
要添加^(?!\s*(?://|(?:foreach|if|switch|case)\b)|$).+
和{
,您可以使用字符类}
并将其添加为替代字段:
[{}]
注意我删除了前瞻周围的分组,因为它始终包含NO TEXT,因为前瞻是零宽度断言,不会将文本返回到匹配中。因此,如果您需要用其他内容替换该行,则onky有1个组并通过^(?!\s*(?://|[{}]|(?:break|foreach|if|switch|case)\b)|$)(.+)
访问它。