正規表示式擷取字串2示例

2021-10-01 10:10:09 字數 1088 閱讀 6177

正規表示式例項:

#!/usr/bin/python

import re

line = "cats are smarter than dogs"

matchobj = re.match( r'(.*) are (.*?) .*', line, re.m|re.i)

if matchobj:

print "matchobj.group() : ", matchobj.group()

print "matchobj.group(1) : ", matchobj.group(1)

print "matchobj.group(2) : ", matchobj.group(2)

else:

print "no match!!"

正規表示式:

r'(.*) are (.*?) .*'

解析:首先,這是乙個字串,前面的乙個 r 表示字串為非轉義的原始字串,讓編譯器忽略反斜槓,也就是忽略轉義字元。但是這個字串裡沒有反斜槓,所以這個 r 可有可無。

(.*) 第乙個匹配分組,.* 代表匹配除換行符之外的所有字元。

(.*?) 第二個匹配分組,.*? 後面多個問號,代表非貪婪模式,也就是說只匹配符合條件的最少字元

後面的乙個 .* 沒有括號包圍,所以不是分組,匹配效果和第乙個一樣,但是不計入匹配結果中。

matchobj.group() 等同於 matchobj.group(0),表示匹配到的完整文字字元

matchobj.group(1) 得到第一組匹配結果,也就是(.*)匹配到的

matchobj.group(2) 得到第二組匹配結果,也就是(.*?)匹配到的

因為只有匹配結果中只有兩組,所以如果填 3 時會報錯。

'(?p...)' 分組匹配

例:身份證 1102231990******xx

import re

s = '1102231990******xx'

res = re.search('(?p\d)(?p\d)(?p\d)',s)

print(res.groupdict())

此分組取出結果為:

直接將匹配結果直接轉為字典模式,方便使用。

用正規表示式擷取字串

region 匹配字元 獲取資訊 匹配字元 獲取資訊 被匹配字串 匹配內容 匹配到的資訊 public static string matchfunction string nowhtml text,string matchname catch return values endregion 使用例...

正規表示式擷取字串操作

string str shdfj3h434343hjhjhgfg 第一步,去除空格trim str.trim 定義乙個空的字串 string str1 null if str null equals str system.out.println str1 前面會生成乙個null這個方法只能吧數字提取...

如何用正規表示式擷取字串

有這麼一段字串 數字 字串 結果取 a 數字 b 字串 擷取方法1 int a convert.toint32 txt1.text.trim replace split 1 string b txt1.text.trim replace split 2 擷取方法2 string str 數字 字串 ...