我正在嘗試撰寫一個正則運算式,它從字串中洗掉所有非字母數字字符,除了那些被字母數字字符包圍的字符。
例如,考慮以下三個示例。
1.
it's->it's
2.
its.->its
3.
It's a: beautiful day? I'm =sure it is. The coca-cola (is frozen right?
It's a beautiful day I'm sure it is The coca-cola is frozen right
我正在使用 Python 的 re 模塊,并且可以使用以下運算式匹配與我正在尋找的相反的內容。
(?<=[a-zA-Z])[^a-zA-Z ](?=[a-zA-Z])
有任何想法嗎?
uj5u.com熱心網友回復:
利用
[^a-zA-Z\s](?!(?<=[a-zA-Z].)[a-zA-Z])
正則運算式證明
解釋
| 圖案 | 細節 |
|---|---|
[^a-zA-Z\s] |
非字母和非空白 |
(?!(?<=[a-zA-Z].)[a-zA-Z]) |
如果后面和前面有字母,則不匹配 |
uj5u.com熱心網友回復:
如果字母數字字符也可以是單詞字符\w(包括下劃線),則可以使用單詞邊界:
[^a-zA-Z\s](?<!\b.\b)
解釋
[^a-zA-Z\s](?<!\b.\b)負向后看,斷言左邊不是由單詞邊界包圍的字符
正則運算式演示
或者使用不區分大小寫的匹配的另一種替代方法,不包括左右字符 AZ 和數字:
[^a-zA-Z\s](?<![A-Z\d].(?=[A-Z\d]))
正則運算式演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/521875.html
