bashスクリプトを使用して、指定された文字列を決定する必要があります。Linux Bash Script Regexの不具合
条件は以下のとおりです。
- 文字列の最初の3文字がハイフンの間
- 任意の任意の配置で子音の数、一つだけ「e」は、それがどんなが含まれていないことができ、「LE-」でなければなりません母音。
#!/bin/bash # Testing regex while read -r line; do if [[ $line =~ ^le((-[^aeiou\W]*e+[^aeiou\W]*)+)$ ]] then printf "\""$line"\"\t\t\t-> True\n"; else printf "\""$line"\"\t\t\t-> False\n"; fi done < <(cat "[email protected]")
それは一つのことを除いて、すべてが正常ん:それは本当言う ハイフンの間
- は、文字列は、私はこのスクリプトを作っ
ハイフンで終わってはいけません、何か
私はウェブサイト上でこの正規表現式を試してみました(thisのような)と、彼らはこの誤動作なく働きました。 私は、WebページとLinux bashの間に何か違いがなければならないと考えることができます。 (私はウェブページ上でPHPを実行していることがわかります)
どうすればいいですか?
ありがとうございました!
あなたの答えをありがとう:-) – Janiaje
この正規表現は2つのEがダッシュの中に入ることを防ぐことはできません: 'le-eseseeeeeeeeess-se-se'はpcregrepを使い、先読みを使うことができます。 – sweaver2112
あなたは正しいです!私はeが母音であることを忘れていた。 'b-h 'を' b-df-h'に変更することで修正されました。 – webb