相关疑难解决方法(0)

Python - 使用正则表达式查找多个匹配并打印出来

我需要从HTML源文件中找到表单的内容,我做了一些搜索并找到了很好的方法来做到这一点,但问题是它只打印出第一个找到的,我怎么能循环它并输出所有的表单内容,而不是只是第一个?

line = 'bla bla bla<form>Form 1</form> some text...<form>Form 2</form> more text?'
matchObj = re.search('<form>(.*?)</form>', line, re.S)
print matchObj.group(1)
# Output: Form 1
# I need it to output every form content he found, not just first one...
Run Code Online (Sandbox Code Playgroud)

python regex

30
推荐指数
3
解决办法
9万
查看次数

将几个正则表达式合并为一个RE

我写了2个RE来匹配String中的几个字符串序列.例如,假设两个正则表达式是RE1,RE2.字符串可以是这4种形式;

1) Match ONLY RE1 'one or more times'
2) Match ONLY RE2 'one or more times'
3) Match RE1 'one or more times' AND match RE2 'one or more times'
4) Match NEITHER RE1 NOR RE2 

目前我正在使用它if来检查每一个,但我知道它非常昂贵,因为我正在多次匹配特定的字符串.我想过使用'或',|但问题是regex会在找到第一个匹配序列后停止匹配,而不是继续查找其他序列.我想找到匹配序列'一次或多次'.

更新:

eg: RE1 = (\d{1,3}[a-zA-Z]?/\d{1,3}[a-zA-Z]?)
    RE2 = (\babc\b)
String: *some string* 100/64h *some string* 120h/90 *some string* abc 200/100 abc *some string* 100h/100f

Matches: '100/64h', '120h/90', 'abc', '200/100', 'abc', '100h/100f'

如何合并这两个RE以使我的程序高效.我正在使用python来编写代码.

python regex

16
推荐指数
2
解决办法
2万
查看次数

如何在python中将多个正则表达式组合成单个正则表达式?

我正在学习正则表达式.我不知道如何组合不同的正则表达式来制作单一的通用正则表达式.

我想为多个案例编写一个正则表达式.我知道这可以通过使用 "|"运算符以天真的方式完成.

我不喜欢这种方法.任何人都可以告诉我更好的方法吗?

python regex pattern-matching

14
推荐指数
2
解决办法
1万
查看次数

在python中匹配多个正则表达式的文本

我有一个包含11个文件的文本语料库,每个文件大约有190000行.我有10个字符串,其中一个或多个可能出现在上述语料库的每一行中.

当我遇到10个字符串中的任何一个时,我需要记录分别出现在该行中的字符串.循环通过正则表达式为每一行和标记它的蛮力方式需要很长时间.有没有一种有效的方法呢?

我发现了一个帖子(使用Python匹配多个正则表达式的行),它提供了一个TRUE或FALSE输出.但是如何从行中记录匹配的正则表达式:

any(regex.match(line) for regex in [regex1, regex2, regex3])
Run Code Online (Sandbox Code Playgroud)

编辑:添加示例

regex = ['quick','brown','fox']
line1 = "quick brown fox jumps on the lazy dog" # i need to be able to record all of quick, brown and fox
line2 = "quick dog and brown rabbit ran together" # i should record quick and brown
line3 = "fox was quick an rabit was slow" # i should be able to record quick and fox.
Run Code Online (Sandbox Code Playgroud)

通过正则表达式循环并记录匹配的解决方案之一是解决方案之一,但是查看比例(11*190000*10),我的脚本现在运行了一段时间.我需要在我的工作中多次重复这一点.所以我正在寻找一种更有效的方式.

python regex multiple-matches

4
推荐指数
1
解决办法
3379
查看次数

结合三个正则表达式

有没有办法将以下三个表达式合并为一个正则表达式?

name = re.sub(r'\s?\(\w+\)', '',name) # John Smith (ii) --> John Smith
name = re.sub(r'\s?(Jr.|Sr.)$','', name, flags=re.I) # John Jr. --> John
name = re.sub(r'".+"\s?', '', name) # Dwayne "The Rock" Johnson --> Dwayne Johnson
Run Code Online (Sandbox Code Playgroud)

python regex

3
推荐指数
1
解决办法
74
查看次数