如何使用正则表达式检查数字?

时间:2018-01-04 11:10:02

标签: python regex

我的代码拍摄照片并将其转换为字符串,然后需要检查照片中是否有数字。

例如,从我转换为字符串的照片中,我想检查照片>>字符串中是否有数字“5545621548956254”。 我想使用正则表达式(或建议任何更好的想法)并检查前4个数字:“5545”是否在整个数字的代码打印中。但是我在做这件事时遇到了问题。

以下是代码。

 @Configuration
 public class WebConfig  extends WebMvcConfigurerAdapter {

     @Override
     public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {

        super.configureMessageConverters(converters);
        converters.add(0, new MappingJackson2HttpMessageConverter());
     }
 }

2 个答案:

答案 0 :(得分:0)

你应该使用类似的东西:

if re.match(r'^5545', hand):
    print(hand)

^表示该行的开头。

答案 1 :(得分:0)

您可以在regex中使用if else,但由于python中的默认重新模块不支持此功能,因此您必须安装regex module

pip install regex

然后

import regex
text="""5545621548956254

554511111111111111


55234566
55451111111111111111111

43333"""
pattern=r'(?(?=^5545)\d+|\s)'




print(list(filter(lambda x:x!='\n',regex.findall(pattern,text,regex.MULTILINE))))

输出:

['5545621548956254', '554511111111111111', '55451111111111111111111']

正则表达式信息:

If Clause (?(?=(^5545))\w+|\s)
Evaluate the condition below and proceed accordingly
Positive Lookahead (?=(^5545))
Assert that the Regex below matches
1st Capturing Group (^5545)
^ asserts position at start of a line
5545 matches the characters 5545 literally (case sensitive)
If condition is met, match the following regex \w+
\w+ matches any word character (equal to [a-zA-Z0-9_])
+ Quantifier — Matches between one and unlimited times, as many times as possible, giving back as needed (greedy)
Else match the following regex \s
\s matches any whitespace character (equal to [\r\n\t\f\v ])