首页 > 解决方案 > 如何使用正则表达式修剪行尾的现有空格?

问题描述

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

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

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

在此处输入图像描述

我想捕获的格式是:

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

标签: regex

解决方案


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

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

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

在零件

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

正则表达式演示


推荐阅读