相关疑难解决方法(0)

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

重复序列的正则表达式

我想匹配由逗号分隔的三个字符的字母序列(只允许字母'a','b','c')(最后一个组不以逗号结尾).

例子:

abc,bca,cbb
ccc,abc,aab,baa
bcb
Run Code Online (Sandbox Code Playgroud)

我写了以下正则表达式:

re.match('([abc][abc][abc],)+', "abc,defx,df")
Run Code Online (Sandbox Code Playgroud)

但它无法正常工作,因为上面的示例:

>>> print bool(re.match('([abc][abc][abc],)+', "abc,defx,df")) # defx in second group
True
>>> print bool(re.match('([abc][abc][abc],)+', "axc,defx,df")) # 'x' in first group
False
Run Code Online (Sandbox Code Playgroud)

似乎只检查第一组三个字母,但它忽略了其余的.如何正确编写这个正则表达式?

python regex

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

re.findall()并不像预期的那样贪婪 - Python 2.7

我试图使用python 2.7中的正则表达式从明文体中提取完整句子的列表.为了我的目的,将所有可以解释为完整句子的内容放在列表中并不重要,但列表中的所有内容都需要是一个完整的句子.以下是将说明问题的代码:

import re
text = "Hello World! This is your captain speaking."
sentences = re.findall("[A-Z]\w+(\s+\w+[,;:-]?)*[.!?]", text)
print sentences
Run Code Online (Sandbox Code Playgroud)

根据这个正则表达式测试器,理论上我应该得到这样的列表:

>>> ["Hello World!", "This is your captain speaking."]
Run Code Online (Sandbox Code Playgroud)

但我实际得到的输出是这样的:

>>> [' World', ' speaking']
Run Code Online (Sandbox Code Playgroud)

文件指出的findall搜索从左至右和*和+运营商都贪婪地处理.感谢帮助.

python regex findall

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

正则表达式适用于regex101.com,但不适用于prod

https://regex101.com/r/sB9wW6/1

(?:(?<=\s)|^)@(\S+) <-正向后看的问题

prod:上像这样工作(?:\s|^)@(\S+),但是我需要一个正确的开始索引(没有空间)。

在JS中:

var regex = new RegExp(/(?:(?<=\s)|^)@(\S+)/g);
Run Code Online (Sandbox Code Playgroud)

解析正则表达式时出错:无效的正则表达式:/(?:(?<= \ s)| ^)@(\ S +)/

我究竟做错了什么?

更新

好吧,在JS中没有后顾之忧

但是无论如何,我需要一个正则表达式来获取比赛的正确开始和结束索引。没有领先的空间。

javascript regex

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

正则表达式:仅提取单词前的数字

我有一些句子像

  • “金奈公寓有 4 间带游泳池的房间”
  • “这间公寓有 2/3 间带走廊的房间”

如何提取单词“room|rooms”之前的唯一数字。寻找必须是 4 和 2/3 的答案。我试过的代码,

  room_found =re.findall(r"\d\s?\/?\d?\s?(?=(rooms)|(room))", str_arg)
  print(room_found)
Run Code Online (Sandbox Code Playgroud)

这将打印 [('', '4 room')] 和 [('', '2/3 room')],但我希望只打印 4 和 2/3。

python regex python-3.x

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

匹配变量时Python re.findall的问题

我试图匹配两个字符串变量,并希望捕获多个匹配.re.findall似乎是这项任务的明显选择,但它似乎并没有像我期望的那样工作.以下是一个例子:

a = 'a(pp)?le'
b = 'ale, apple, apol'
match = re.findall(a,b)
match
['','pp']
Run Code Online (Sandbox Code Playgroud)

但是,当我将相同的变量应用于re.search时,它会识别字符串中的嵌入式正则表达式,并获取第一个匹配项:

match = re.search(a,b)
match.group()
'ale'
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么re.findall不能在这个实例中工作?我希望如下:

match = re.findall(a,b)
match
['ale','apple']
Run Code Online (Sandbox Code Playgroud)

谢谢!

python regex variables

0
推荐指数
1
解决办法
1105
查看次数

python - 正则表达式为什么`findall`什么都没找到,但`search`有效吗?

>>> reg = re.compile(r'^\d{1,3}(,\d{3})*$')
>>> str = '42'
>>> reg.search(str).group()
'42'
>>> reg.findall(str)
['']
>>> 
Run Code Online (Sandbox Code Playgroud)

python regex为什么reg.findall一无所获,但reg.search在上面的这段代码中工作?

python regex

0
推荐指数
1
解决办法
1755
查看次数