python - 正则表达式仅在字符串开头替换匹配项

标签 python regex

我正在尝试通过去除不需要的前缀(如 0、*、# 和 +)来使用正则表达式匹配电话号码

例如

+*#+0#01231340010

应该产生,

1231340010

我正在使用 python re 模块

我试着跟随,

re.sub(r'[0*#+]', '', '+*#+0#01231340010')

但它也会删除后面的 0。

我尝试使用正则表达式组,但仍然无法正常工作(或者我确实做错了什么)。

我们将不胜感激。

提前致谢。

最佳答案

我相信您正在做的是尝试删除字符串中 [1-9] 范围内第一个数字之前的所有内容。它比使用更安全

re.sub(r'^[^1-9]+', '', input)

参见 regex demo

图案细节:

  • ^ - 字符串的开始
  • [^1-9]+ - 1 个或多个 (+) 个字符,而不是 1-9 范围内的数字(不包括 0 )

我说“更安全”意味着问题中可以有其他没有列举的前缀,比如p

关于python - 正则表达式仅在字符串开头替换匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38776050/

相关文章:

Python zipfile 通过 suds 发送错误 : "' ascii' codec can't decode byte 0x8c in position 10: ordinal not in range(128)"

python - 如何将 web3 导入到 pyscript 中?

java - Java中的正则表达式

java - 使用正则表达式删除引号

c# - 使用正则表达式从字符串中获取子字符串

python - 试验 python 线程,如何停止线程

python mysql.connector 连接断开时写入失败停滞 30 秒

python - 如何插入颜色或三角化表面

c++ - 为什么此代码在 visual studio 中有效但在 gcc 中失败?

regex - 重复子序列的有效正则表达式