亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標題:
【已解決】求個正則表達式
[打印本頁]
作者:
cfwyy
時間:
2017-11-28 16:12
標題:
【已解決】求個正則表達式
本帖最后由 cfwyy 于 2019-06-11 08:45 編輯
有個字符提取的需求,想用正則做,但正則學的還不到家,看能不能向壇子里的大神求一個。
有一串文本:
*電子類* *電阻01* *貼片 0805* *電阻 IDN101620050250*
想用兩個正則分別提取兩種 *號之間的 文本,*號間可能出現(xiàn)的字符是漢字, 英文字母, 數(shù)字, 空格:
1. *號間 沒有 “IDN.”這一串的, 其中IDN是固定的,后面是12個數(shù)字。
結(jié)果如:
電子類
電阻01
貼片 0805
2. *號間 有 “IDN.”這一串的
結(jié)果如:
電阻 IDN101620050250
這種 我會寫 \*[\w\u4e00-\u9fa5\x20]+IDN\d{12}\*
但第一種我不會,不知道 怎么把有 IDN... 這樣特定的給排除掉。
看大神們能不能賜個第一種的正則 或教個思路,謝謝!
作者:
cfwyy
時間:
2017-11-28 16:17
第一次發(fā)帖,我的注冊時間怎么是 unix 元年啊 哈哈,雖然這個賬號注冊了也應該有好幾年了。
作者:
jason680
時間:
2017-11-28 16:18
回復
1#
cfwyy
方法很多,接下來要做什么?
作者:
cfwyy
時間:
2017-11-28 16:34
回復
3#
jason680
接下來 很有可能是要 換個存儲方式,內(nèi)容寫到access數(shù)據(jù)庫 或者 寫到XML 文件 還沒確定好。
我現(xiàn)在的想法是 把 前面的類和小類 和后面具體的條目分別提取出來再說,請大神賜教一下,謝謝!
作者:
jason680
時間:
2017-11-28 18:05
本帖最后由 jason680 于 2017-11-28 18:18 編輯
回復
4#
cfwyy
$ awk -F'\\*' '{for(n=2;n<NF;n+=2)if(
$n!~/IDN/
)print $n}' FILE
電子類
電阻01
貼片 0805
$ awk -F'\\*' '{for(n=2;n<NF;n+=2)if(
$n~/IDN/
)print $n}' FILE
電阻 IDN101620050250
作者:
wh7211
時間:
2017-11-28 21:23
回復
1#
cfwyy
echo "*電子類* *電阻01* *貼片 0805* *電阻 IDN101620050250*"|awk 'BEGIN{RS="\\* +\\*"}$0!~/IDN/{gsub(/^*/,"");print}'
復制代碼
輸出:
電子類
電阻01
貼片 0805
echo "*電子類* *電阻01* *貼片 0805* *電阻 IDN101620050250*"|awk 'BEGIN{RS="\\* +\\*"}/IDN/{gsub(/*.*$/,"");print}'
復制代碼
輸出:
電阻 IDN101620050250
作者:
cfwyy
時間:
2017-11-29 09:17
回復
5#
jason680
謝謝!可以用!不用awk, 只用單純的正則表達式 可以匹配嗎?
作者:
cfwyy
時間:
2017-11-29 09:19
回復
6#
wh7211
謝謝!好用的。如不用awk 只用單純正則 可以匹配出來嗎?
作者:
1cpuer
時間:
2017-11-29 13:04
http://72891.cn/forum.php?mod=viewthread&tid=572121
作者:
wh7211
時間:
2017-11-29 17:06
回復
8#
cfwyy
可以,用PCRE:
echo "*電子類* *電阻01* *貼片 0805* *電阻 IDN101620050250*"|grep -Po '(^| +)\*\K[^A-Z\*]+(?=\*)'
復制代碼
輸出:
電子類
電阻01
貼片 0805
作者:
1cpuer
時間:
2019-06-03 07:08
echo "*電子類* *電阻01* *貼片 0805* *電阻 IDN101620050250*"|grep -Po '(^| +)\*\K[^A-Z\*]+(?=\*)
\K 是什么,我也不知道。
作者:
cfwyy
時間:
2019-06-04 08:50
回復
11#
1cpuer
怎么把我的老貼子翻出來了
\K 是PCRE的用法,表示重置匹配的開始位置,就是說\K前面匹配的內(nèi)容會丟掉,最后的結(jié)果就是從\K后面開始。
作者:
本友會機友會攝友會
時間:
2019-06-05 13:20
提示:
作者被禁止或刪除 內(nèi)容自動屏蔽
作者:
csccyab
時間:
2019-06-10 17:12
本帖最后由 csccyab 于 2019-06-11 13:57 編輯
$ echo '*電子類* *電阻01* *貼片 0805* *電阻 IDN101620050250*' | grep -Po '(?<=\*)(?!\s)+((?!IDN)[\p{Han}\w\s])+(?=\*)'
電子類
電阻01
貼片 0805
歡迎光臨 Chinaunix (http://72891.cn/)
Powered by Discuz! X3.2