簡體   English   中英

RegEx - 在匹配內容時刪除前綴和尾隨空格

[英]RegEx - removing preceding & trailing whitespace while matching contents

我想嘗試構建一個RegEx語句,它將從字符串中刪除任何預先停止或尾隨的空格(但不保留字符串中包含的任何內容),同時還匹配所選格式。 例如,字符串不能超過20個字符,可以包含a-zA-Z0-9中的任何字符以及下划線和連字符。 但最重要的是,它必須修剪或忽略在字符串的開頭或結尾處找到的任何空格,以便:

正確:“祝你有個美好的一天”

不正確:“度過愉快的一天”

我嘗試了許多不同的方法,但不幸的是到目前為止,我還沒有能夠提出一個完全符合我想要的公式。 誰能幫助我使用合適的RegEx? (這是最簡單形式的RegEx,而不是特定於平台的)。

搜索此模式:

^\s*(.*?)\s*$

替換為這一個:

\1

從你的例子看來,字符串中間也允許使用空格,所以試試這個

^((([a-zA-Z0-9\-_][a-zA-Z0-9\-_ ]{0,18}?[a-zA-Z0-9\-_]))|([a-zA-Z0-9\-_]))$

任何匹配的都是正確的。

模式中的or部分用於支持單個字符句子。

這個應該適合您的需求:

^\S[\w\s-]{0,18}\S$

18是字符串的maxlength - 2 ,因為兩個\\S將匹配任何非空白字符。 例如,在這種情況下,如果字符串的長度高於20字符,則字符串將不匹配。 此外,由於相同的上述約束,如果長度低於2字符,則字符串將不匹配。

使用這個正則表達式^\\S((.{0,18}\\S)|)$

^字符串的開頭

\\S非空間符號

(.{0,18}\\S)? 最后的任何符號和非空格符號(0-19個符號)

| 要么

$ end of string

這是一個使用sed的例子

echo "  Have a nice day  "|sed -E "s/^ *([^ ]+.*[^ ]+) +$/\\1/"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM