[英]Regex to match tag contents while simultaneously omitting leading and trailing whitespace
[英]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.