首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用正则表达式去掉尖括号

使用正则表达式去掉尖括号
EN

Stack Overflow用户
提问于 2010-12-10 19:51:47
回答 5查看 5.8K关注 0票数 3

具有以下字符串:

代码语言:javascript
复制
<str1> <str2> <str3>

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

代码语言:javascript
复制
str1
str2
str3

我正在尝试使用以下正则表达式,但它似乎没有产生我想要的结果:

代码语言:javascript
复制
<[a-zA-Z0-9]*.>

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

代码语言:javascript
复制
<str1>
<str2>
<str3>

我如何去掉<>?

另外,我也希望只匹配具有格式的字符串,即3<>,不多也不少。如何实现?

EN

回答 5

Stack Overflow用户

发布于 2010-12-10 20:07:26

使用与perl兼容的正则表达式可以很容易地做到这一点:

代码语言:javascript
复制
<([^>]+)>

您只需确保告诉您的库搜索所有匹配项,而不是尝试将正则表达式与整个字符串进行匹配。然后,您将以str1、str2和str3作为第一个小组赛。

票数 6
EN

Stack Overflow用户

发布于 2010-12-10 19:57:10

如果您将其更改为<(a-zA-Z0-9*.)>

票数 1
EN

Stack Overflow用户

发布于 2010-12-10 20:03:28

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

代码语言:javascript
复制
/^<([a-zA-Z0-9]*?)>\s<([a-zA-Z0-9]*?)>\s<([a-zA-Z0-9]*?)>$/

Perl中的示例:

代码语言:javascript
复制
#!/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;

输出:

代码语言:javascript
复制
str1
str2
str3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4408552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档