首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RegEx匹配可以以不同的单词结束

RegEx匹配可以以不同的单词结束
EN

Stack Overflow用户
提问于 2014-01-16 19:47:59
回答 3查看 135关注 0票数 3

我想要匹配几行,但它们可以结束不同的结局。加上“注册官:”或“注册:”。

所以我天真地尝试了这个:

代码语言:javascript
运行
复制
Registrant's address:(\s*)(?<Value>.*).*((Registrar:)|(Registered:))

这个或操作员有什么问题?

(目标是使用RegEx从不同的tlds直接从用户服务器提取数据)

1.数据:

域名: argos.co.uk 注册人: Argos Ltd登记人类型:英国公共有限公司(公司编号: 1081551)登记人地址: Avebury 489-499 Avebury Boulevard Central Milton Keynes Milton Keynes MK9 2 2NW英国注册地址: NetNames Limited网址:http://www.netnames.co.uk

我想要这个:

Avebury 489-499 Avebury Boulevard Central Milton Keynes Milton Keynes MK9 2NW United Kingdom

2.数据:

域名: amazon.co.uk注册人:亚马逊欧洲控股技术有限公司注册类型:未知注册公司地址: 65大道G-D。卢森堡夏洛特卢森堡城LU-1311卢森堡注册官: Amazon.com Tag =Amazon.com网址:http://www.amazon.com相关日期:注册日期:1996年8月-之前到期日期:05-12月-2020年最后更新日期:2013年10月23日

我想要这个:

65 boulevard G-D. Charlotte Luxembourg City Luxembourg LU-1311 Luxembourg

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-16 20:03:31

您可以使用以下正则表达式来匹配所需的数据,而不需要捕获不必要的数据。

使用查找断言:

代码语言:javascript
运行
复制
(?<=Registrant's address:).*(?=(?:Registrar:|Registered:))

工作实例:

http://regex101.com/r/cN5wP3

只需确保使用RegexOptions.Singleline即可。

编辑:

要捕获命名组value中的匹配,您需要如下所示:

代码语言:javascript
运行
复制
(?<=Registrant's address:)(?<value>.*)(?=(?:Registrar:|Registered:))

示例:

http://regex101.com/r/fY3oR9

票数 1
EN

Stack Overflow用户

发布于 2014-01-16 19:55:14

看来你不需要在这里

代码语言:javascript
运行
复制
var result = String.Join(Environment.NewLine, File.ReadLines(filename)
                .SkipWhile(x => !x.StartsWith("Registrant's address:"))
                .Skip(1)
                .TakeWhile(x => !String.IsNullOrEmpty(x)));
票数 3
EN

Stack Overflow用户

发布于 2014-01-16 19:55:22

正则表达式中的:根本不存在于文本中,如果还没有允许.匹配新行,则需要指定.

代码语言:javascript
运行
复制
Registrant's address:(\s*)(?<Value>.*).*((Registrar)|(Registered))

您有许多捕获组可能是不必要的。

代码语言:javascript
运行
复制
Registrant's address:\s*(?<Value>.*).*Regist(?:rar|ered)

另一个注意事项是,如果要匹配的文本中有连续的记录,那么贪婪匹配可能会遇到一些问题。添加几个?将解决这个问题:

代码语言:javascript
运行
复制
Registrant's address:\s*(?<Value>.*?).*?Regist(?:rar|ered)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21171421

复制
相关文章

相似问题

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