最初の文字が最後の文字と同じであることを確認しますか?

最初の文字が最後の文字と同じであることを確認しますか?

これについてのアイデアがあります。逆参照を使用する必要がありますgrepが、これが私が得ることができる最も近いものです。

grep "^[a-zA-z]\$[a-zA-z]\

私の問題は、最初の文字==を最後の文字として確認する方法がわからないことです。

ベストアンサー1

あなたはする必要があります

grep -E '^([a-zA-Z]).*\1$'

最初の文字をキャプチャし(...)、逆参照を最後の文字として使用し、その間の他のすべての文字はスキップされます.*。この-Eスイッチは拡張正規表現一致するため、コマンドの範囲内でキャプチャグループをエスケープする必要はありませんgrep。ただし、次のようにして移植性を向上させることもできます。

grep '^\([a-zA-Z]\).*\1$'

単一の文字を含む行のみを出力したい場合(ただし、同じ最初の文字と最後の文字とも呼ばれます)、オプションでその文字の存在を定義できます。

grep -- '^\([a-zA-Z]\)\(.*\1\)\{0,1\}$'

\{0,1\}一致しないか、一度だけ一致模様 .*\1以上。

またはこれをそれぞれ一致させてください。一つ上記のバイト文字は次のとおりです。

grep -- '^\(.\)\(.*\1\)\{0,1\}$'

(Basic-Regular-Expression、BRE)パターンマッチングはデフォルトでgrep使用されます。ここで、、、、--basic-regexpなどのメタ文字は特別な意味を失い、文字通り一致します。変換定義タイプを使用する必要があります。 、およびまたは単に切り替えてください。?+{|()\?\+\{\|\(\)パターンマッチングEREに接続します-E(ただし、POSIX EREには逆参照はありません)。


文字列の長さが同じであることを確認する窒素:

grep -- '^\([a-zA-Z]\{N-HERE\}\)\(.*\1\)\{0,1\}$'

サム文字の長さ:

grep -- '^\([a-zA-Z]\{3\}\)\(.*\1\)\{0,1\}$'

前述のように、次の行が返されます。サム窒素一般的に)文字の長さxxx、必要でない場合は次のように変更してください。

grep -- '^\([a-zA-Z]\{3\}\).*\1$'

おすすめ記事