Contents

Regex 排除單字方法(Lookarounds)

這次專案有用到 email 學生任證,有想一個用 email 方法
但這次需求要把一些教育信箱排除在外…
查了一下 regex 好像沒法對特定單字做
不過我有實做一個方法(不知道有沒有漏洞)

a(?!xxx)

不會抓 axxx,但會抓 ax,axx,aoxxx 的a

a(?=xxx)

會抓 axxx 的a

(?:xxx)

2019-12-08
這邊 xxx 一樣是連詞

1
^I like (?:dogs|penguins), but not (?:lions|tigers).$

Regular Expression for Or | “|” Regex | Regular Expression I | OCPsoft

不會算 group

最後再沒有找到資料情況下,有例用上面 3 個想到一個方法

@(?!nfu)\S*edu.tw

例用(?!xxx)\S(非空白字符)
真的太久沒有寫會忘 orz
我每次都是寫的時候再查

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
\s 元字符用于查找空白字符。

空白字符可以是:

    空格符 (space character)
    制表符 (tab character)
    回车符 (carriage return character)
    换行符 (new line character)
    垂直换行符 (vertical tab character)
    换页符 (form feed character)

http://www.w3school.com.cn/js/jsref_regexp_whitespace.asp

regex - Regular expression to match a line that doesn’t contain a word? - Stack Overflow
還有看到這篇,但好像不實用

Regex Cheat Sheet看到裡面還有很多不會
感覺還有更深的東西。有時間再食用。

2019-07-25

今天在改 PHP 程式,由於要改一些程式把xxx_line去除掉
但是跟 PHP __LINE__衝突
不過後來找到正規化去除(?<!_)_line

無聊技術研究: RegExp 應用: lookahead , lookbehind 備份圖

裡面有提到lookahead(往前看)

Positive lookahead : a(?=Y)
Negative lookahead : a(?!Y)

剛我這個例子是用lookbehind(往後看)
之前沒有記錄到

Positive lookbehind : (?<=Y)a
Negative lookbehind: (?<!Y)a

參考來源:

Regex 群組與環顧 Groups & Lookaround - 正規表示法教學 Regular Expression Tutorial 備份圖