gpt4 book ai didi

c# - "arbitrary"分隔符之间的 RegEx 替换

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:50 25 4
gpt4 key购买 nike

我在替换“任意”定界符之间的文本文件部分时遇到一些问题。

这是我想要做的:我有如下标记:

//   [ADX START] ANYTHING //   [ADX END] 

<!-- [ADX START] --> ANYTHING <!-- [ADX END] -->

/*
[ADX START] */ ANYTHING /* [ADX END] */

所以,这些是不同的评论风格,我想捕获开头的 [ADX START](包括周围的评论),然后是中间的文本,最后是最后的 [ADX END]。

因此,我给它一个这样的文本文件:

test.php:
<?php
BEFORE
// [ADX START]
REMOVEME
// [ADX END]
AFTER

test.css:
BEFORE
/* [ADX START]*/
REMOVEME
/*[ADX END] */
AFTER

变成:

test.php:
<?php
BEFORE
AFTER

test.css:
BEFORE
AFTER

等等。如您所见,注释样式和定界符之间可以有任意数量的空格(或没有空格)。

到目前为止,我想出的是:

string newFileContent = Regex.Matches(fileContent, "(\\[ADX START\\].*\\[ADX END\\])", RegexOptions.IgnoreCase);

然而,这并没有做任何事情。我认为让我失望的是括号等;此外,我希望能够简单地插入不同的注释样式,例如 #、//、/**/等;

任何指向正确方向的指针都将不胜感激。

最佳答案

像这样使用单行选项和正则表达式

string strRegex =@"(\/\/|\/\*).*?\[ADX START\].*?\[ADX END\]\s*(\*\/)?";
^ ^ ^
| | |->match */ 0 or 1 time
| |
| |->match lazily till the first ADX END
|->match // or /*
string s=Regex.Replace(fileContent,strRegex,"",RegexOptions.Singleline);//replace it

关于c# - "arbitrary"分隔符之间的 RegEx 替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13210939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com