我正在解析源代码文件,我想删除所有行注释(即以"//"开头)和多行注释(即/ .... /).但是,如果多行注释中至少有一个换行符(\n),我希望输出只有一个换行符.
例如,代码:
qwe /* 123
456
789 */ asd
Run Code Online (Sandbox Code Playgroud)
应该完全变成:
qwe
asd
Run Code Online (Sandbox Code Playgroud)
而不是"qweasd"或:
qwe
asd
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?谢谢
编辑:测试的示例代码:
comments_test = "hello // comment\n"+\
"line 2 /* a comment */\n"+\
"line 3 /* a comment*/ /*comment*/\n"+\
"line 4 /* a comment\n"+\
"continuation of a comment*/ line 5\n"+\
"/* comment */line 6\n"+\
"line 7 /*********\n"+\
"********************\n"+\
"**************/\n"+\
"line ?? /*********\n"+\
"********************\n"+\
"********************\n"+\
"********************\n"+\
"********************\n"+\
"**************/\n"+\
"line ??"
Run Code Online (Sandbox Code Playgroud)
预期成绩:
hello
line 2
line 3
line 4
line 5
line 6
line 7 …Run Code Online (Sandbox Code Playgroud) 资源:
[This] is some text with [some [blocks that are nested [in a [variety] of ways]]]
Run Code Online (Sandbox Code Playgroud)
结果文字:
[This] is some text with
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以做到这一点 - >或者必须达到pyparsing(或其他解析库)?
我有一个正则表达式来找到单个if-then-else条件.
string pattern2 = @"if( *.*? *)then( *.*? *)(?:else( *.*? *))?endif";
Run Code Online (Sandbox Code Playgroud)
现在,我需要扩展它并在条件允许的情况下提供循环.但正则表达式不适合正确提取then&else部分.
示例循环IF条件:
if(2> 1)then(if(3> 2)then(if(4> 3)then then 4 else 3 endif)else 2 endif)else 1 endif
正则表达式的预期结果:
condition =(2> 1)然后part =(if(3> 2)then(if(4> 3)then then 4 else 3 endif)else 2 endif)else part = 1
我可以检查是否然后部分有实际值或条件.然后我可以在这个内部条件上使用相同的正则表达式,直到一切都解决了.
当前的正则表达式返回结果如下:
condition =(2> 1)然后part =(if(3> 2)then(if(4> 3)then then else part = 3
意思是,它在找到第一个"else"后返回值.但实际上,它必须从最后的其他内容中提取.
有人可以帮我弄这个吗?
正如可以使用正则表达式来匹配嵌套模式?,无法创建正则表达式来匹配任意嵌套模式.但是有可能创建一个能够生成n级"nesteness"正则表达式的算法吗?
基本上,我想,以取代trim(whatever)与rtrim(ltrim(whatever))
我设法手动创建3个级别(javascript语法):
level[1] = /\(([^()]*)\)/g
level[2] = /\(((?:[^()]*\([^()]*\))*[^()]*)\)/g
level[3] = /\(((?:(?:(?:[^()]*\([^()]*\))*[^()]*)*\((?:(?:[^()]*\([^()]*\))*[^()]*)*\))*[^()]*)\)/g
Run Code Online (Sandbox Code Playgroud)
这里有一些测试数据:
1st(ddd) + 1st(ddd)
2nd(dd(d))
3rd(a(b) + (cd(h) + d(dfas) + zzz))
4th(a(b(c(d))))
8th(a(b(c(d(e(f(g()))))))
Run Code Online (Sandbox Code Playgroud)
我知道在每个级别都[^()]*需要用可以包含括号的非捕获组替换,但我不确定如何将该算法推广到第n级 ......
我正在尝试编写一个Regex表达式,可以确定字符串是否包含奇数个"- 引号.
关于这个问题的回答者已经完成了一些非常相似的事情,以确定一串字母是否包含某个字母的奇数.但是我无法适应我的问题.
到目前为止我所拥有的,但并不完全正常:
String regexp = "(\\b[^\"]*\"(([^\"]*\"){2})*[^\"]*\\b)";
Pattern pattern = Pattern.compile(regexp);
Matcher matcher = pattern.matcher("bbacac");
if(matcher.find()){
System.out.println("Found");
}
else
System.out.println("Not Found");
Run Code Online (Sandbox Code Playgroud) 我试图将数学表达式分解为碎片,我试图使用正则表达式/\([^)]+\)/来完成这个技巧(在这里找到).但是阅读这个答案,我明白这个正则表达式会搜索第一个右括号)来完成,在处理时给我带来麻烦,例如:
(2*x^2 + 5*x - (2*x - 3)^(1/2))/(1 + x)
^ ^ ^
START IGNORE FINISH
Run Code Online (Sandbox Code Playgroud)
因为我不是想出正则表达式真的很好,我知道如果我要处理这个用strpos,substr并且str_replace还是有不同的正则表达式适用于preg_match_all并得到正确的组括号?
注意:此函数将是递归的,以便求解内括号.
编辑:
在这种情况下我的预期输出:
$array = null;
$expression = '(2*x^2 + 5*x - (2*x - 3)^(1/2))/(1 + x)';
$expression = str_replace(' ', '', $expression);
preg_match_all('MAGIC EXPRESSION HERE', , $array);
print_r($array);
// Output
array(
[0] => (2*x^2+5*x-(2*x-3)^(1/2))
[1] => (1+x)
)
Run Code Online (Sandbox Code Playgroud)
谢谢.
我正在解析项目中的html代码C#.
假设我们有这个字符串:
<a href="javascript:func('data1','data2'...)">...</a>
Run Code Online (Sandbox Code Playgroud)
或者在必要.subtring()的之后:
func('data1','data2'...)
Run Code Online (Sandbox Code Playgroud)
Regex检索func()参数的最佳模式是什么,避免对分隔符('和)进行计数,因为它们有时可能是参数字符串的一部分?
我有这个麻烦:我必须验证许多数学表达式的正确性,特别是检查连续运算符+ - * /。例如:
6+(69-9)+3
Run Code Online (Sandbox Code Playgroud)
还可以,同时
6++8-(52--*3)
Run Code Online (Sandbox Code Playgroud)
不。我没有使用该库<regex>,因为它仅与 C++11 兼容。有没有替代方法来解决这个问题?谢谢。
我试图在字符串中匹配平衡大括号({}).例如,我想平衡以下内容:
if (a == 2)
{
doSomething();
{
int x = 10;
}
}
// this is a comment
while (a <= b){
print(a++);
}
Run Code Online (Sandbox Code Playgroud)
我从MSDN中得到了这个正则表达式,但是效果不好.我想提取多个{}的嵌套匹配集.我只对父母比赛感兴趣
"[^{}]*" +
"(" +
"((?'Open'{)[^{}]*)+" +
"((?'Close-Open'})[^{}]*)+" +
")*" +
"(?(Open)(?!))";
Run Code Online (Sandbox Code Playgroud) 我有以下文字:
{{some text {{with nested text}} and again}}以及其他一些文字{{remove this too}}
我想匹配OUTERmost {{}}括号,以便我留下:
还有一些文字在这里
这是我到目前为止:
var text = Regex.Replace(content, "{{[^}}]*}}",string.Empty);
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?任何帮助将非常感激.
更新添加一些可能有用的链接:
{{.+?}} http://www.regexr.com/3941i
{{.+}} http://www.regexr.com/3941f