标签: python-re

处理字母和数字组合的简单方法

假设我有两个字符串:

string_ex1 = 'AbC024'
string_ex2 = 'aBc24'

string_ex3 = 'AbC24'
string_ex4 = 'aBc24'
Run Code Online (Sandbox Code Playgroud)

如果我相互比较,我想要两个字符串相等的结果。例如 'AbC' == 'aBc', '024' == '24'

我已经知道如果我用 \w+ 和 \d+ 区分它们并分别转换为小写和 int,我可以得到一个结果,说两个字符串是相同的。但我想知道是否有一些更简单的功能来做到这一点。

string1_str = lower(re.findall('\w+', string_ex1))
string1_int = int(re.findall('\d+', string_ex1))
string2_str = lower(re.findall('\w+', string_ex2))
string2_int = int(re.findall('\d+', string_ex2))

if string1_str == string2_str and string1_int == string2_int:
    print('identical')
Run Code Online (Sandbox Code Playgroud)

*编辑 比较应该适用于 string_ex1、string_ex2 和 string_ex3、string_ex4

python regex python-re

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

使用正则表达式删除单词

如何SUPPORTED SOFTWARE VERSIONS*: ONLY impacted versions are listed.从文本中删除该行?

text = (
  'SUPPORTED SOFTWARE VERSIONS*: ONLY impacted versions are listed.HP-UX B.11.00, B.11.11, and B.11.22.',
  'SUPPORTED SOFTWARE VERSIONS*: ONLY impacted versions are listed.HP-UX B.11.00, B.11.04, B.11.11 running',
  'SUPPORTED SOFTWARE VERSIONS*: ONLY impacted versions are listed.HP-UX B.11.11 and B.11.23'
)
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-re

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

Python正则表达式替换括号内的单词

如何用空字符串替换括号内的单词重复单词?

import re

resource_path = '/mdm/v1/{appId}/templates/{templateId}'
clean_resource_path = re.sub(r"\s*\{[^()]*\}$", '', resource_path)

print(clean_resource_path)
Run Code Online (Sandbox Code Playgroud)

我得到输出,/mdm/v1/但理想情况下我希望输出为/mdm/v1/templates. 我知道我的正则表达式正在用{}空引号替换它们之间的所有内容,但我只想要下一个可用的引号。

python regex python-3.x python-re

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

re.findall... 发现太多了!:)

在 python 的 re.findall 中试验正则表达式时,我遇到了这个问题:

line = "Lorem ipsum HELLO dolor sit amet, GOODBYE consectetuer adipiscing elit, HELLO sed diam nonummy nibh GOODBYE all"

X = re.findall("(HELLO)(.*)(GOODBYE)", line, flags=re.MULTILINE)

print (y)
Run Code Online (Sandbox Code Playgroud)

这将输出:

('HELLO', ' dolor sit amet, GOODBYE consectetuer adipiscing elit, HELLO sed diam nonummy nibh ', 'GOODBYE')
Run Code Online (Sandbox Code Playgroud)

但我想要的更像是......

[('HELLO', ' dolor sit amet', 'GOODBYE'), ('HELLO', 'sed diam nonummy nibh ', 'GOODBYE')]
Run Code Online (Sandbox Code Playgroud)

因此,不是一次取一个,re.findall(基于我定义模式的方式)似乎正在寻找 HELLO 和 GOODBYE 的第一次和最后一次出现来定义列表元素,然后它放置所有内容中间的其他人进入中间组。

有没有办法按照我的方式获得它?我想也许“序列化” HELLO 和 GOODBYE 对可能会有所帮助,有点像这样:

line = "Lorem ipsum HELLO_1 dolor sit amet, …
Run Code Online (Sandbox Code Playgroud)

python python-re

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

正则表达式 - 匹配直到一组多种可能性

我有以下文字:
你可能有那个东西,不,你没有,但也许是

我正在尝试编写一个可以匹配所有内容的正则表达式,直到它找到一些特定的词,在本例中为“NO”“BUT”,如果字符串包含这两个词,则在第一个词处停止:

你可能有那个东西不,你没有,但也许是的,
你可能有那个东西

你可能有你没有的东西也许是的
你可能有你没有的东西

我正在尝试下面的正则表达式,但问题是它在BUT停止,即使它没有

(.*)(?:NO|BUT)
Run Code Online (Sandbox Code Playgroud)

匹配上述正则表达式的示例,粗体表示完整匹配,斜体表示组 1:
您可能有那个东西 NO 你没有也许是

我的期望:
你可能有那个东西,不,你没有,但也许是的

python regex python-re

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

如何从文本文件中删除包含低于给定值的数字的所有行?

我试图从文件中删除任何数字低于 -2000 的每一行。我对 python 很陌生,很可能我不理解该re模块,也不确定我正在使用的方法。

这是示例文件:

{ "Position": { "X": -1660.313, "Y": -3107.795, "Z": 12.85458 }
{ "Position": { "X": -494.0083, "Y": 57.33647, "Z": 56.59263 }
{ "Position": { "X": -1039.662, "Y": -2641.444, "Z": 36.96656 }
Run Code Online (Sandbox Code Playgroud)

这是我得到的:

 with open('file.json','r') as input:
    with open("temp.json", 'w') as output:  
        for line in input:
            match = re.search(r'('-'\d+)', line)
            my_number = float(match.group())
            if my_number < -2000:
                output.write(line.strip())
Run Code Online (Sandbox Code Playgroud)

就目前而言,我确信re.search(r'('-'\d+)),'-'是错误的。我也不确定如何正确使用match.group().

如果有人能指导我正确的方向或提出不同的方法,我将不胜感激。

python python-re

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

拆分串联函数并保留分隔符

我正在尝试拆分包含 python 函数的字符串,以便生成的输出将单独的函数保留为列表元素。
s='hello()there()'应该拆分为['hello()', 'there()']
为此,我使用正则表达式先行在右括号上拆分,但不在字符串末尾拆分。

虽然前瞻似乎有效,但我无法)按照各种帖子中的建议将结果保留在结果字符串中。简单地用正则表达式分割会丢弃分隔符:

import re
s='hello()there()'
t=re.split("\)(?!$)", s)
Run Code Online (Sandbox Code Playgroud)

这导致:'hello(', 'there()']

s='hello()there()'
t=re.split("(\))(?!$)", s)
Run Code Online (Sandbox Code Playgroud)

将分隔符包装为一个组会导致)保留为一个单独的元素:与使用该函数的方法['hello(', ')', 'there()'] 一样:filter()

s='hello()there()'
u = list(filter(None, re.split("(\))(?!$)", s)))
Run Code Online (Sandbox Code Playgroud)

再次导致括号作为单独的元素:['hello(', ')', 'there()']

如何拆分这样的字符串以使函数在输出中保持完整?

python regex string split python-re

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

使用正则表达式提取匹配两边的字符

我有一个字符串:

test=' 40  virtual asset service providers law, 2020e section 1  c law 14 of 2020   page 5  cayman islands'
Run Code Online (Sandbox Code Playgroud)

我想匹配数字的所有出现,然后不仅打印数字,还打印数字两侧的三个字符。

目前,使用re我已经匹配了数字:

print (re.findall('\d+', test ))
['40', '2020', '1', '14', '2020', '5']
Run Code Online (Sandbox Code Playgroud)

我希望它返回:

[' 40  v', 'w, 2020e s', 'aw 14 of', 'of 2020   ', 'ge 5  c']
Run Code Online (Sandbox Code Playgroud)

python regex python-re

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

在字符串后提取文本

我想从以下文本中提取“name=”之后的字符串。我已经编写了以下正则表达式,但它并没有真正起作用。所需的输出是[Taal, Muntinlupa city]

    text = [ "id='00e5885868b4d7ed', url='https://api.twitter.com/1.1/geo/id/00e5885868b4d7ed.json', place_type='city', name='Taal', full_name='Taal, Calabarzon', country_code='PH', country='Republic of the Philippines'",
     "id='00c699d656122ebe', url='https://api.twitter.com/1.1/geo/id/00c699d656122ebe.json', place_type='city', name='Muntinlupa City', full_name='Muntinlupa City, National Capital Region', country_code='PH', country='Republic of the Philippines']

    matched_vals = [re.findall(r'(?<=name\=).*(?=\s)',tweet) for tweet in text]
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-re

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

如何匹配前面没有特定单词的字符串?

仅当.get不在字符串之前时,我才尝试匹配字符串ARIBABA 。

例子:

ARIBABA = config.get('SOMETHING', 'ARIBABA').lower()

我已经尝试过这个(在下面),但它与任何内容都不匹配。

^(.get)\bARIBABA\b

python regex python-re

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

如何检测主要是数字的字符串

在python程序中,我想过滤主要是数字的字符串,例如表中的实验结果等。

例如,必须过滤“year 2004 2005 2006”或“dimension 2.343m 3.85m 343.5m”等字符串。

我知道如何检查字符串是否包含数字,any(i.isdigit() for i in str)但如何计算它们?我可以用循环来做到这一点,但我寻找一个类似的函数来内联完成它。

python python-re

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

标签 统计

python ×11

python-re ×11

regex ×6

python-3.x ×3

split ×1

string ×1