正则表达式

Posted nanjingli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。

1.正则表达式大全

https://www.cnblogs.com/xudong-bupt/p/3586889.html

2.贪婪匹配

*?, +?, ??
The ‘*‘, ‘+‘, and ‘?‘ qualifiers are all greedy; they match as much text as possible. Sometimes this behaviour isn’t desired; if the RE <.*> is matched against ‘<a> b <c>‘, it will match the entire string, and not just ‘<a>‘. Adding ? after the qualifier makes it perform the match in non-greedy or minimal fashion; as few characters as possible will be matched. Using the RE <.*?> will match only ‘<a>‘.

是否需要贪婪匹配在写正则表达式时是很重要的一个概念。‘?‘只有在上面三种表达时才表示非贪婪匹配,其他时候都是表示0个或1个字符。贪婪匹配简单来说就是匹配尽可能多符合的结果,非贪婪匹配表示只要匹配到一个符合的结果就行。下面这个程序是用来匹配前几个字符串是包含数字的的字符串,用来提取数字,数字可以包含正负号,如“+2356 wqrvg”:

 1 import re
 2 class Solution:
 3     def myAtoi(self, str: str) -> int:
 4         str = str.strip()
 5         group = re.match(r(([-\\+]\\d+)|\\d+).?, str)
 6         if group is None:
 7             return 0
 8         temp = group.groups()
 9         temp1 = int(temp[0])
10         temp2 = pow(2, 31)
11         if temp1 > (temp2 - 1):
12             return temp2-1
13         elif(temp1 < (-1*temp2)):
14             return -1*temp2
15         return temp1

 

以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

循环通过 python 正则表达式匹配

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

攻破难啃的骨头-正则表达式(转)

正则表达式的贪婪和非贪婪模式