簡體   English   中英

我如何用變量值進行正則表達式拆分?

[英]How do I regex split with variable values?

我有以下字符串:

21>請具體說明。 您的意思是什么?21>您好嗎623> Simon?

我想將其拆分為:

21>Please be specific. What do you mean by that?
21>Hello are you there
623>Simon?

基本上,分隔符是數值(在這種情況下為21和623),后跟>

我的實現是找到> char,然后返回直到找到非數字值。

所以基本上使用sub-string之類的。 但這很丑陋,我可以肯定有更好的Regex實現,但是對此我還不夠了解。

那么可以在這里使用正則表達式嗎?

您可以通過向前看和向后看來實現這一目標,這樣您的匹配項就是您要拆分的內容之間的零長度區域。

string s = "21>Please be specific. What do you mean by that?21>Hello are you there623>Simon?";
Regex reg = new Regex(@"(?<=\D)(?=\d+>)");
var r = reg.Split(s);
foreach(var i in r)
    Console.WriteLine(i);

將輸出

21>請具體說明。 你是什​​么意思?

21>你好

623>西蒙?

嘗試使用以下正則表達式。 它的零寬度匹配之間somethingnumber>

正則表達式: (?<=\\D)(?=\\d+>)替換為\\n進行演示。

說明:

  • (?<=\\D)向后看,看它是否不是數字。

  • (?=\\d+>)向前看是否是number>

並匹配它們之間的zer0-width

Regex101演示

試試: [0-9]+>

說明:

  • [0-9]+至少1位數字

  • >隨后>


將匹配項替換為\\n$0可能會有意義,這會將它們移動到單獨的行中。

暫無
暫無

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

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