簡體   English   中英

REGEX_REPLACE 不匹配從開頭到第一次出現的 5 位數單詞的所有字符

[英]REGEX_REPLACE not matching all chars from the beginning to the first occurrence of a 5 digits word

我在 Mysql 表中有這條記錄:

ADDRESS
----------------------------------
sdasd 4354 ciao 12345 sdsdsa asfds 

我想匹配從開頭到第一次出現的 5 位數單詞的所有字符,包括它。 在這種情況下,使用 REGEXP_REPLACE,我想刪除匹配的 substring 並返回sdsdsa asfds

我試圖做的是:

SELECT REGEXP_REPLACE(ADDRESS, '^.+\b\d{5}\b.','') FROM `mytable`

正則表達式似乎可以在這個片段中對其進行測試,我不明白為什么 Mysql 不會。

MySQL 支持不支持 PERL 等屬性的 POSIX 正則表達式,例如\b\d等。

這個正則表達式應該適合你:

SELECT REGEXP_REPLACE
('sdasd 4354 ciao 12345 sdsdsa asfds', '^.+[[:<:]][0-9]{5}[[:blank:]]+', '') as val;

+--------------+
| val          |
+--------------+
| sdsdsa asfds |
+--------------+

正則表達式詳細信息:

  • ^.+ :在開頭匹配 1 個或多個任意字符(貪婪)
  • [[:<:]] :匹配單詞邊界(零寬度)
  • [0-9]{5} : 准確匹配 5 位數字
  • [[:blank:]]+ :匹配 1 個或多個空格(制表符或空格)

暫無
暫無

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

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