我想找到一個正則運算式,它可以讓我匹配大寫、小寫和中間的空格。
也就是說,您可以在下面看到我要收集的樣本。
id,name,continent
1,Louise,Latin America
2,Sasha,Asia
3,Mike,North America
我正在做的是在一段時間內檢查記錄是否符合正則運算式。但是我發現中間有空格的那些沒有被撿起來(比如北美或拉丁美洲)。你可以在這里看到我的代碼
while read line; do
if [["$line"=~^.*,.*,[a-zA-Z ]*
我也嘗試過[a-zA-Z\n]*,但不起作用。
任何的想法?
uj5u.com熱心網友回復:
您可以使用
rx='^[0-9]*,[^,]*,[[:alpha:][:space:]]*$'
while read -r line; do
if [[ "$line" =~ $rx ]]; then
// Do something
fi
done < file
詳情:
^- 字串開始[0-9]*- 零個或多個數字(看起來你的ID列只能包含數字),- 一個逗號[^,]*,- 除(之外的 任何零個或多個字符.*都太通用并且匹配任何文本,因此如果該行包含超過三列,它將報告有效),- 一個逗號[[:alpha:][:space:]]*- 零個或多個字母或空格$- 字串結束。
查看在線演示:
#!/bin/bash
s='id,name,continent
1,Louise,Latin America
2,Sasha,Asia
3,Mike,North America'
rx='^[0-9]*,[^,]*,[[:alpha:][:space:]]*$'
while read -r line; do
if [[ "$line" =~ $rx ]]; then
echo "$line: Valid"
else
echo "$line: Invalid"
fi
done <<< "$s"
輸出:
id,name,continent: Invalid
1,Louise,Latin America: Valid
2,Sasha,Asia: Valid
3,Mike,North America: Valid
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/479314.html
