使用正则表达式去除尖括号

时间:2010-12-10 11:51:47

标签: regex

拥有以下字符串:

<str1> <str2> <str3>

我正在尝试使用正则表达式,以便在C中获得以下3个字符串:

str1
str2
str3

我正在尝试使用以下正则表达式,但它似乎并没有产生我的目标:

<[a-zA-Z0-9]*.>

根据http://www.myregextester.com/index.php,正则表达式将产生

<str1>
<str2>
<str3>

如何取出&lt;&gt;?

此外,我还想仅使用格式匹配字符串,即使用3&lt;&gt;,不多也不少。如何处理?

5 个答案:

答案 0 :(得分:6)

这可以通过perl兼容的正则表达式轻松完成,如下所示:

<([^>]+)>

您必须确保告诉您的库搜索所有匹配项,而不是尝试将正则表达式与整个字符串匹配。你最终将str1,str2和str3作为第一组匹配。

答案 1 :(得分:1)

如果更改为&lt;([a-zA-Z0-9] *。)&gt;

,该怎么办?

答案 2 :(得分:0)

这个正则表达式可以完成这项工作:

/^<([a-zA-Z0-9]*?)>\s<([a-zA-Z0-9]*?)>\s<([a-zA-Z0-9]*?)>$/
Perl的例子:

#!/usr/bin/perl
use 5.10.1;
use strict;
use warnings;

my $re = qr/^<([a-zA-Z0-9]*?)>\s<([a-zA-Z0-9]*?)>\s<([a-zA-Z0-9]*?)>$/;
my $str = q!<str1> <str2> <str3>!;
$str =~ s/$re/$1\n$2\n$3/;
say $str;

输出:

str1
str2
str3

答案 3 :(得分:0)

≤(?[A-ZA-Z0-9] *)&GT; - 然后您访问每个匹配的第二个匹配组。 (有关如何访问http://www.myregextester.com/index.php

上的匹配组的PHP示例

你可以通过积极的外观(http://www.regular-expressions.info/lookaround.html)这样做(?&lt; =&lt;)[a-zA-Z0-9] *(?=&gt;)但不是所有口味都支持它( http://www.regular-expressions.info/refflavors.html

免责声明:如果您不了解其工作原理和原因,请不要从网络上复制正则表达式。这包括Stack Overflow的答案!

答案 4 :(得分:0)

您可以简单地使用下面给出的正则表达式来对角括号进行检查。

var text= "<span></span>";
var check = new RegExp(/[^>]\d+[a-z]*[^<])/ );
var valid = check text= 
if(!valid) {
return false;
} 
else
{
return true;
}