当前位置: 首页 > 面试题库 >

如何在python中将正则表达式与可选字符一起使用?

满子实
2023-03-14
问题内容

说我有一个字符串

"3434.35353"

和另一个字符串

"3593"

我如何制作一个能够同时匹配两者的正则表达式,而不必在另一个失败的情况下将模式设置为其他形式呢?我知道\d+会匹配3593,但不会对进行任何操作3434.35353,但是(\d+\.\d+)仅会匹配带有小数的那个,而不会返回与匹配的匹配项3593

我希望m.group(1)返回:

"3434.35353"

要么

"3593"

问题答案:

您可以?在一组字符后面加上a ,使其成为可选字符。

你想要一个点后跟任意数量的数字\.\d+,组合在一起(\.\d+),可选(\.\d+)?。坚持你的模式:

import re
print re.match("(\d+(\.\d+)?)", "3434.35353").group(1)



3434.35353



print re.match("(\d+(\.\d+)?)", "3434").group(1)



3434


 类似资料:
  • 问题内容: 我正在尝试验证一个没有多余字符的(美国)电话号码。因此格式为1-555-555-5555,没有破折号,空格等,并且1是可选的。但是,我的正则表达式仅会排除前导数字为1的数字,并说没有该数字的数字将无效。这是我在使用的地方,我哪里出错了? 问题答案: 用: ?表示“可选”。

  • 我正在尝试编写一个bash脚本,其中包含一个函数,因此当给定一个,,etc.文件它使用带有相关开关的tar来解压缩文件。 我使用if-elif-then语句来测试文件名的结尾,但我无法使用regex元字符使其匹配。 为了节省不断重写脚本,我在命令行中使用“test”,我认为下面的语句应该可以工作,我已经尝试了括号、引号和元字符的每一个组合,但仍然失败。 我相信问题很简单,我到处都找过了,但我不知道

  • 问题内容: 在Python 2.6中。似乎字符串末尾的那个标记和不符合组表达式兼容。佛的例子 退货 (因此实际上无效)。并使用 导致错误: 为什么这样工作以及如何解决? 问题答案: 甲表达式是一个 字符组 ,这意味着它会匹配任何一个字符包含在其中。因此,您正在匹配文字字符。字符组始终适用于一个输入字符,因此永远不能包含锚点。 如果要匹配空格字符 或 字符串的结尾,请改用非捕获组,将其与或选择器结合

  • 字符串可以说是程序设计中最为重要的数据类型之一。几乎每种高级编程语言都有它的一席之地,而且能有效的使用它也是开发者编写实用程序的基本准则。作为重要的扩展,正则表达式赋予开发者操作字符串的额外能力。ECMAScript 6 的缔造者们将这些事实牢记于心,改进了字符串和正则表达式,并添加了长久以来缺失的某些功能。本章会讲解它们的变化之处。 译者注: gitbook 无法正常解析 $$ 字符,所以在模板

  • 我使用这个正则表达式: 要匹配这样的字符串: 分为4组: 问:我如何使第一个组可选,使结果组是一个空字符串? 我想在每种情况下得到4组,如果可能的话。 这种情况下的输入字符串:(第一组后面没有下划线)

  • 问题内容: 我想使用来自用户的输入作为正则表达式模式来搜索某些文本。它可以工作,但是我该如何处理用户在正则表达式中放置有意义的字符的情况?例如,用户要搜索:正则表达式引擎会将(s)分组。我希望它像对待字符串一样对待它。我可以replace在用户输入上运行并将和 替换,但是问题是我将需要对每个可能的正则表达式符号进行替换。你知道更好的方法吗? 问题答案: 使用此功能: 4.2.3 re模块内容 转义