【问题标题】:How to trim exisiting whitespace at the end of the line using Regular Expression?如何使用正则表达式修剪行尾的现有空格?
【发布时间】:2020-04-24 05:44:02
【问题描述】:

美好的一天!我是新手,正在探索正则表达式。我目前正在分析数据并排除我们系统中的脏数据。现在,我很难删除尾随空格,我不知道应该使用什么内置函数来消除它。如果我放 \h 它不会捕获空间,但如果我使用 \s 它会捕获空间但它在行尾有尾随空格。

这是我在 regexp.com 上测试的正则表达式

\b((\d{1,}[\s|\-]+){1,3}\d{1})\b

enter image description here

我想捕捉的格式是:

Format1- ####-#######-# 
Format2- #### ####### #
Format3- ##-#######-#
Format4- ## ####### #
Format5- ########## ({10,12} digits)

【问题讨论】:

  • 请在您的问题中添加示例输入(无描述、无图片、无链接)(无评论)。
  • 欢迎来到 Stack Overflow。 SO 是面向专业和热情的程序员的问答页面。将您自己的代码添加到您的问题中。您应该至少展示自己为解决这个问题所做的研究。

标签: regex


【解决方案1】:

如果您想匹配这些格式,您可以匹配 2 位或 4 位数字。捕获匹配组中的空格或-,并使用对该组中捕获的内容的反向引用以保持分隔符相同(因此不匹配空格和- 格式相同)

请注意,\s 也可以匹配换行符。如果你只想匹配空格,你可以添加它。

\b(?:(?:\d{4}|\d{2})([- ])\d{7}\1\d|\d{10,12})\b

部分

  • \b字边界
  • (?:非捕获组
    • (?:\d{4}|\d{2}) 匹配 4 位或 2 位数字
    • ([- ]) 捕获group 1,匹配- 或空格(使用\s 匹配空白字符)
    • \d{7}\1\d 匹配 7 个数字,反向引用第 1 组(匹配与前一个相同的字符),后跟最后一个数字
    • |或者
    • \d{10,12} 匹配 10 - 12 位数字
  • )关闭群
  • \b字边界

Regex demo

【讨论】:

  • 天哪!谢谢先生帮助我。我只是在探索您的代码以获取我想要捕获的所有数据或格式。大佬帮帮忙!最后,你能解释一下非捕获是什么意思吗?喜欢 (?:)
  • 非捕获意味着它是一个组,在这种情况下用于替换 | 以匹配任一替换项。但是当您想在您的工具或代码中使用它或使用对它的反向引用时,您不能单独访问它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-13
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 2012-03-20
  • 1970-01-01
相关资源
最近更新 更多