Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
regex-模式部分匹配,但不完全通过跳过模式匹配_Regex - Fatal编程技术网

regex-模式部分匹配,但不完全通过跳过模式匹配

regex-模式部分匹配,但不完全通过跳过模式匹配,regex,Regex,我有一个文件中的html代码块。我有一个类,我正在使用它来定位一个非常大的html文件中的文本。我正在查找>City,St zip() desire:'City1,st12345','City2,st67891','Parm=a,st11121','City4,st31415' 实际面积:“第1城,街12345”,“2245平方英尺”,“2378平方英尺”,“第4城,街31415” 请参见演示: ??如何修复正则表达式以捕获所需的文本?最好使用BeautifulSoup,然后删除前面带有可选等

我有一个文件中的html代码块。我有一个类,我正在使用它来定位一个非常大的html文件中的文本。我正在查找>City,St zip<之间的所有文本,它在文件中找到所有4个匹配项,但由于某些原因,我不确定为什么它只返回2个所需值。它似乎忽略了所需的正则表达式,转而使用过去的正则表达式

正则表达式:突出显示地址[\S\S]?>()

desire:'City1,st12345','City2,st67891','Parm=a,st11121','City4,st31415'
实际面积:“第1城,街12345”,“2245平方英尺”,“2378平方英尺”,“第4城,街31415”
请参见演示:


??如何修复正则表达式以捕获所需的文本?

最好使用BeautifulSoup,然后删除前面带有可选等号的换行符

soup = BeautifulSoup(s, 'html.parser')
for tag in soup.find_all('p', class_='3D"highlight-address"'):
    print(re.sub(r"=?[\r\n]+", "", tag.text))
输出

City1, ST 12345
City2, ST 67891
Parma, ST 11121
City4, ST 31415

请改用解析器。对不起,我该怎么做?regex不能做到这一点吗?因为我所有的代码都是基于正则表达式的。你可以使用
s
标志使点匹配新行,并使用非贪婪匹配。或者使用
突出显示地址[^]*>=?([^]*)
@第四只鸟-肯定更近了。但是它仍然捕获了\n是否有办法摆脱\n然后它将是完美的!!我认为将beautiful soup与
soup=BeautifulSoup(s,'html.parser')一起用于soup中的标记会更容易。find_all('p',class='3D“highlight address'):print(tag.text)
这肯定是一个更好的主意-++
City1, ST 12345
City2, ST 67891
Parma, ST 11121
City4, ST 31415