相关疑难解决方法(0)

Python正则表达式问题:剥离多行注释但保持换行符

我正在解析源代码文件,我想删除所有行注释(即以"//"开头)和多行注释(即/ .... /).但是,如果多行注释中至少有一个换行符(\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)

python regex parsing comments

4
推荐指数
2
解决办法
6767
查看次数

删除所有嵌套块,同时通过python单独保留非嵌套块

资源:

[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(或其他解析库)?

python regex recursion nested brackets

3
推荐指数
1
解决办法
971
查看次数

正则表达式找到内部if条件

我有一个正则表达式来找到单个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"后返回值.但实际上,它必须从最后的其他内容中提取.

有人可以帮我弄这个吗?

c# regex

3
推荐指数
1
解决办法
1779
查看次数

在RegEx中创建第n级嵌套模式的算法

正如可以使用正则表达式来匹配嵌套模式?,无法创建正则表达式来匹配任意嵌套模式.但是有可能创建一个能够生成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级 ......

javascript regex algorithm recursion

3
推荐指数
1
解决办法
336
查看次数

确定String是否包含奇数引号

我正在尝试编写一个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)

java regex

2
推荐指数
2
解决办法
2537
查看次数

用于分解多项式表达式的正则表达式

我试图将数学表达式分解为碎片,我试图使用正则表达式/\([^)]+\)/来完成这个技巧(在这里找到).但是阅读这个答案,我明白这个正则表达式会搜索第一个右括号)来完成,在处理时给我带来麻烦,例如:

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

谢谢.

php regex

2
推荐指数
1
解决办法
135
查看次数

最好的c#Regex模式来获取原始字符串中的函数参数值?

我正在解析项目中的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()参数的最佳模式是什么,避免对分隔符('和)进行计数,因为它们有时可能是参数字符串的一部分?

c# regex string

2
推荐指数
1
解决办法
906
查看次数

C++ 中数学表达式的正则表达式

我有这个麻烦:我必须验证许多数学表达式的正确性,特别是检查连续运算符+ - * /。例如:

6+(69-9)+3
Run Code Online (Sandbox Code Playgroud)

还可以,同时

6++8-(52--*3)
Run Code Online (Sandbox Code Playgroud)

不。我没有使用该库<regex>,因为它仅与 C++11 兼容。有没有替代方法来解决这个问题?谢谢。

c++ regex

2
推荐指数
1
解决办法
2104
查看次数

正则表达式平衡组

我试图在字符串中匹配平衡大括号({}).例如,我想平衡以下内容:

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)

c# regex balancing-groups

1
推荐指数
1
解决办法
1653
查看次数

如何使用RegEx删除可能嵌套的括号?

我有以下文字:

{{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

c# regex

1
推荐指数
1
解决办法
655
查看次数