![](/img/trans.png)
[英]Java regex to match 2 special charater followed by not known number of digits
[英]Regex: Match wildcard followed by variable length of digits
我正在嘗試使用以下正則表達式從類似字符串的Personal number: 123456
提取個人號碼:
(Personal number|Personalnummer).*(\d{2,10})
當嘗試獲得第二組時,它將僅包含個人號碼的后兩位。 如果我將數字范圍更改為{3,10}
,它將與個人號碼的最后3位數字匹配。
現在,我不能只是將空格添加為附加組,因為我無法確定總會有空格-可能沒有空格或其他字符,但是個人號碼始終在結尾。
無論如何,我可以指示解析器獲取整個數字字符串嗎?
.*
充當正則表達式的貪婪量詞。 最終它會吃掉所有匹配的字符,除了最后兩個必須與之匹配的字符。
您必須通過申請使其舍不得?
。 像下面
(Personal number|Personalnummer).*?(\d{2,10})
現在應該可以正常工作了。
您還可以將第一個組轉換為非捕獲組,然后在如下所示的答案中僅獲得所需的數字。
(?:Personal number|Personalnummer).*?(\d{2,10})
在通配符匹配上使用一個不願意的量詞 (例如*?
)。 例如.*?
將導致完整的數字表達式:
Pattern p = Pattern.compile("(Personal number|Personalnummer).*?(\\d{2,10})");//note the ?
Matcher m = p.matcher("Personal number: 123456");
if ( m.find() ){
System.out.println(m.group(2));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.