如何限制e004_n07中匹配/替换前导零?但是,如果任何一项包含全零,那么我需要在该项中保留一个零(请参见下面的示例)。对于输入字符串,第一个值将始终有3位数字,第二个值将始终有2位数字。
输入和输出示例
e004_n07 #e4_n7
e020_n50 #e20_n50
e000_n00 #e0_n0
是否可以单独使用re.sub完成此操作,还是需要使用re.search/re.match?
如果只想在字母后删除零,则可以使用:
([a-zA-Z])0+
替换为\1
反向引用。请参阅regex演示。
在([a-zA-Z])
将捕获了一封信,0+
将匹配1个或多个零。
Python演示:
import re
s = 'e004_n07'
res = re.sub(r'([a-zA-Z])0+', r'\1', s)
print(res)
请注意,这 re.sub
将查找并替换所有不重叠的匹配项(将执行全局搜索并替换)。如果不匹配,则将按原样返回字符串,而无需进行修改。因此,无需使用额外的re.match
/
re.search
。
UDPATE
要保留1个零(如果数字仅包含零),可以使用
import re
s = ['e004_n07','e000_n00']
res = [re.sub(r'(?<=[a-zA-Z])0+(\d*)', lambda m: m.group(1) if m.group(1) else '0', x) for x in s]
print(res)
参见Python演示
此处,r'(?<=[a-zA-Z])0+(\d*)'
正则表达式0+
将ASCII字母((?<=[a-zA-Z])
)之后的一个或多个零()匹配,然后使用捕获任何其他数字(0或更多)到组1中(\d*)
。然后,在替换中,我们检查第1组是否为空,如果为空,则插入0
(只有零),否则,我们插入第1组的内容(第一个前导零之后的剩余数字)。
问题内容: 我需要替换字符串的一部分。我浏览了Python文档并发现了re.sub。 我期望这能打印,而不是“酒吧”。 谁能告诉我我做错了什么? 问题答案: 除了捕获要 替换 的零件外,您还可以捕获要 保留 的零件,然后使用引用对其进行引用以将它们包括在替换字符串中。 尝试以下方法: 另外,假设这是HTML,则应考虑使用HTML解析器来执行此任务,例如Beautiful Soup 。
我想使用Gson将字符串转换为Foo对象: 下面是我的正则表达式: 如何使用此正则表达式将所有,.和替换为,,而不更改JSON中的键和值?
问题内容: 我有这个字符串: 现在,我想在每个数字之前添加String num:。 因此结果必须是: 这也必须工作: 用于搜索数字的正则表达式是:[0-9]+ 但是我想用num:+ [匹配的子字符串]替换匹配的子字符串。 我现在写了一个带有数字的示例,但另一个示例可以是:在每个电子邮件地址之前添加 ·Email found·: 问题答案: 利用分组。您可以使用括号(并)定义组,并通过组索引$n在哪
问题内容: 我正在尝试以的形式找到网页上的所有链接,或者我做了一个正则表达式,并且可以正常工作: 但是,有没有更短的写方法呢?我重复了:// [^ / \“] + /两次,可能没有必要。我尝试了各种方法,但是没有用。我尝试了: 很明显,我在这里缺少了一些东西,或者我只是对Python正则表达式不够了解。 问题答案: 您正在使用捕获组,并在使用捕获组时改变其行为(它只会返回捕获组的内容)。您的正则表
通过好奇心,有没有办法用Java Stream编写它?
Change is inevitable, except from vending machines. — Robert C. Gallagher Puppet 的 regsubst 函数提供了一种处理文本的简单方法, 用于在字符串中查找和替换,或者从字符串提取匹配的模式。 例如,我们通常需要对从 facter 或者从外部程序获得的数据做这样的处理。 在本例中将会看到如何使用 regsubst 提