如何使用正则表达式在行尾修剪现有空白?

问题描述 投票:0回答:1

美好的一天!我是新人,正在探索正则表达式。我目前正在分析数据,并排除系统中的脏数据。现在,我很难删除尾随的空格,我不知道应该使用什么内置函数来消除此空白。如果我输入\ 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)
regex nsregularexpression regexp-replace
1个回答
0
投票

如果要匹配这些格式,则可以匹配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

© www.soinside.com 2019 - 2024. All rights reserved.