簡體   English   中英

RegEx Match可以以不同的單詞結束

[英]RegEx Match can end with different words

我想匹配幾行,但它們可以結束不同。 使用“注冊商:”或“注冊:”。

所以我天真地試過這個:

Registrant's address:(\s*)(?<Value>.*).*((Registrar:)|(Registered:))

這個OR運算符怎么了?

(目標是直接從WhoIs服務器使用RegEx從不同的tlds中獲取數據)

1.數據:

域名:argos.co.uk

 Registrant: Argos Ltd Registrant type: UK Public Limited Company, (Company number: 1081551) Registrant's address: Avebury 489-499 Avebury Boulevard Central Milton Keynes Milton Keynes MK9 2NW United Kingdom Registered through: NetNames Limited URL: http://www.netnames.co.uk 

我要這個:

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

2.數據:

 Domain name: amazon.co.uk Registrant: Amazon Europe Holding Technologies SCS Registrant type: Unknown Registrant's address: 65 boulevard GD. Charlotte Luxembourg City Luxembourg LU-1311 Luxembourg Registrar: Amazon.com [Tag = AMAZON-COM] URL: http://www.amazon.com Relevant dates: Registered on: before Aug-1996 Expiry date: 05-Dec-2020 Last updated: 23-Oct-2013 

我要這個:

  65 boulevard GD. Charlotte Luxembourg City Luxembourg LU-1311 Luxembourg 

看來你這里不需要正則表達式

var result = String.Join(Environment.NewLine, File.ReadLines(filename)
                .SkipWhile(x => !x.StartsWith("Registrant's address:"))
                .Skip(1)
                .TakeWhile(x => !String.IsNullOrEmpty(x)));

:你的正則表達式中根本不存在你的文本中,如果你還沒有允許的話,你需要指定RegexOptions.Singleline . 匹配新線。

Registrant's address:(\s*)(?<Value>.*).*((Registrar)|(Registered))

您有許多可能不必要的捕獲組。

Registrant's address:\s*(?<Value>.*).*Regist(?:rar|ered)

另請注意,如果您在嘗試匹配的文本中有連續記錄,則可能會遇到貪婪匹配的問題。 加一些? 將解決問題:

Registrant's address:\s*(?<Value>.*?).*?Regist(?:rar|ered)

您可以使用以下正則表達式僅匹配所需的數據,而無需捕獲不必要的數據。

使用環繞聲斷言:

(?<=Registrant's address:).*(?=(?:Registrar:|Registered:))

工作范例:

http://regex101.com/r/cN5wP3

只需確保使用RegexOptions.Singleline

編輯:

要捕獲命名組value的匹配,您將擁有:

(?<=Registrant's address:)(?<value>.*)(?=(?:Registrar:|Registered:))

例:

http://regex101.com/r/fY3oR9

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM