簡體   English   中英

C#正則表達式捕獲組

[英]C# Regex capturing groups

試圖繞過正則Regex capturing groups ,但遇到了一些麻煩。

我有一些要為其捕獲組的字符串:

@msg=hello;name=test 1 // Groups: msg = hello, name = test, rest = 1 
@msg=hi 2 // Groups: msg = hello, name = null, rest = 2
@name=tt 3 // Groups: msg = null, name = tt, rest = 3

我有以下regex

msg=(?P<msg>[^;]+)?.*name=(?P<name>[^;]+)?\s(?P<rest>.*)

第一行工作正常, 但第二或第三行則無效 知道我如何使它們也適用嗎? 我試着放一些()? 在捕獲組周圍無濟於事:

// Below gets me weird results
(msg=(?P<msg>[^;]+)?)?.*(name=(?P<name>[^;]+)?)?\s((?P<rest>.*))?

謝謝。

您應該使用更嚴格的令牌而不是取反,使用可選的非捕獲組:

@(?:msg=(?<msg>\w+);?)?(?:name=(?<name>\w+))?\s*(?<rest>.*)

正則表達式演示

暫無
暫無

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

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