正则分组取数字
常用匹配规则:
实例 | 描述 |
. | 匹配除 "\n" 之外的任何单个字符 |
\d | 匹配数字 |
\D | 匹配非数字 |
Python:
import re
'''
请用python编写函数find_string,从文本中搜索并打印内容,要求支持通配符星号和问号。
\d:匹配所有数字
\D : 匹配所有非数字
(\d*):* 匹配 0个或多个表达式
(\d*):+ 匹配 1个或多个表达式
result.groups() 匹配到的分组列表
result.groups()[0] 得到第一组匹配结果,也就是(\d*)匹配到的
result.groups()[1] 得到第二组匹配结果,也就是第二个 (\d*)匹配到的
因为匹配结果中只有两组,所以如果填 2 时会报错。
'''
def find_string(str_in,pat):
return re.compile(pat).search(str_in);
if __name__=="__main__":
str="入库179.00件"
pat=r'(\d*)\.(\d*)'
result=find_string(str_in=str,pat=pat)
print(result)
print(result.groups()[1])
java:
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches { public static void main( String[] args ){ String line = "入库179.00件"; String pattern = "(\\d+)\\.(\\d+)"; Pattern r = Pattern.compile(pattern); Matcher m = r.matcher(line); if (m.find( )) { System.out.println("Found value: " + m.group() ); System.out.println("Found value: " + m.group(1) ); } else { System.out.println("NO MATCH"); } } }