[英]regex to match repetitive text divided by hash character that can repeat multiple times in multi line string
我有以下正則表達式與 C# 一起使用
^.*(#\w+?#.+?#.+?#.+?#.+?:).*$
我需要能夠在多行字符串中提取特定格式字符串的最后一次出現
格式可以是:
#test12345-abc#slkjs3234-df#slkj23423#slkjdj2343:{asdf9230-232_jk233}
或者
#test12345-abc#slkjs3234-df#slkj23423#slkjdj2343:
並且可以讓格式出現 1 次或多次並背靠背,請參見下面的示例:
示例 1:
jlkjlkjlkjlkj
lkjlkjlj lkjlkj #test12345-abc#slkjs3234-df#slkj23423#slkjdj2343:{asdf9230-232_jk233} lkjlj
slkjlj
示例 2:
jlkjlkjlkjlkj
lkjlkjlj lkjlkj #test12345-abc#slkjs3234-df#slkj23423#l23lkj22:{asdf9230-232_jk233} #test12345-abc#slkjs3234-df#slkj23423#Other:{asdf9230-232_jk233} lkjlj
slkjlj
示例 3:
jlkjlkjlkjlkj
lkjlkjlj lkjlkj #test12345-abc#slkjs3234-df#slkj23423#slkjdj2343: lkjlj
slkjlj
示例 4:
jlkjlkjlkjlkj
lkjlkjlj lkjlkj #test12345-abc#slkjs3234-df#slkj23423#l23lkj22: #test12345-abc#slkjs3234-df#slkj23423#Other: lkjlj
slkjlj
我正在努力尋找合適的正則表達式來查找示例和示例中的不同位置? 謝謝
您可以使用
var result = Regex.Match(text, @"(?:#\w+(?:-\w+)?)+(?::{[\w-]+})?", RegexOptions.RightToLeft)?.Value;
請參閱正則表達式演示。 請注意, RegexOptions.RightToLeft
選項使正則表達式引擎從字符串的末尾搜索匹配項,因此如果有多個匹配項,您將獲得最后一個匹配項。
細節
(?:#\\w+(?:-\\w+)?)+
- 一次或多次重復
#
- 一個#
字符\\w+
- 一個或多個單詞字符(字母、數字、下划線)(?:-\\w+)?
- 一個可選的非捕獲組匹配 1 或 0 次出現-
然后是 1+ 個單詞字符(?::{[\\w-]+})?
- 一個可選的非捕獲組:
:
- 一個冒號{[\\w-]+}
- 一個{
字符,然后是一個或多個字母、數字、下划線或連字符,然后是一個}
字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.