简单的正则表达式匹配问题

时间:2010-09-16 11:58:07

标签: c# regex

我有以下字符串“sometextsometextSiteId-111-aaaaasometext”

如果字符串包含“SiteId-111-aaaaa”,我想获得111-aaaaa部分。 (任何数字,任何字符)

"sometextsometextSiteId-111-aaaaasometext"  -> 111-aaaaa
"sometextsometextSiteId-123-abcdesometext"  -> 123-abcde
"sometextsometextsitId-111-aaaaasometext" -> (nothing)
"SiteId-999-QWERTPOIPOI" -> "999-QWERR"

我想这应该可以吗?

任何提示?

感谢Larsi

2 个答案:

答案 0 :(得分:2)

(?<=SiteId-)([0-9]+-[a-zA-Z]{5})

应捕获该部分。

PowerShell测试:

$re = '(?<=SiteId-)([0-9]+-[a-zA-Z]{5})'

'sometextsometextSiteId-111-aaaaasometext',
"sometextsometextSiteId-123-abcdesometext",
"sometextsometextsitId-111-aaaaasometext",
"SiteId-999-QWERTPOIPOI" |
% {
    $x = [regex]::Matches($_, $re)
    Write-Host $_ - $x
}

产量

sometextsometextSiteId-111-aaaaasometext - 111-aaaaa
sometextsometextSiteId-123-abcdesometext - 123-abcde
sometextsometextsitId-111-aaaaasometext - 
SiteId-999-QWERTPOIPOI - 999-QWERT

答案 1 :(得分:0)

SiteId - (\ d {3} - \ D +)这应该捕获它。

此外,您可以使用rubular来试用正则表达式,并在底部有一个快速的正则表达式参考。