[英]Regular expressions convert PCRE to POSIX to use regex in MySQL query
[英]How to convert this regex to mysql posix
如果已有答案,請原諒我。
作為一個帶有正則表達式的總計n00b,我很難在這個場景中獲得良好的正則表達式:
我需要找到一個字符串是否只包含來自MySQL表字段的字母,字母和數字......例如。 只需獲得MET-KL2531910並獲得沒有數字的MET-IHLPOUJ(因此不包括MET-KL2531910)。
過了一段時間,想出了這些:
適用於MET-KL2531910
REGEXP '^(?=.*[-a-zA-Z])(?=.*[0-9])[-A-z0-9]+$'
適用於MET-IHLPOUJ
REGEXP '^(?=.*[-A-z])[-A-z]+$'
但是,由於MySQL使用POSIX,因此會出現此錯誤
從regexp獲得錯誤'重復 - 運算符操作數無效'
任何人都可以將我的正則表達式轉換為POSIX正則表達式。
適用於MET-KL2531910
REGEXP '^(?=.*[-a-zA-Z])(?=.*[0-9])[-A-z0-9]+$'
你可以用
^[-[:alnum:]]*([-[:alpha:]][-[:alnum:]]*[0-9]|[0-9][-[:alnum:]]*[-[:alpha:]])[-[:alnum:]]*$
細節 :
^
- 字符串的開頭 [-[:alnum:]]*
- 0+連字符或字母數字字符 (
- 另一組:
[-[:alpha:]][-[:alnum:]]*[0-9]
- 連字符/ alpha字符,0 + alnum / -
字符,數字 |
- 要么 [0-9][-[:alnum:]]*[-[:alpha:]]
- 一個數字,0 + alnum / -
chars,連字符/ alpha char )
- 交替組的結束 [-[:alnum:]]*
- 0+連字符或字母數字字符 $
- 結束字符串。 對於MET-IHLPOUJ
REGEXP '^(?=.*[-Az])[-Az]+$'
在這里,你根本不需要前瞻,因為你只匹配你需要的東西,使用
^[-[:alpha:]]+$
這里,
^
- 匹配字符串的開頭 [-[:alpha:]]+
- 匹配1個或更多-
或字母(= alpha字符) $
- 結束字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.