タグ付けされた質問 「regular-expression」

正規表現は、文字列内の文字のパターンを照合する手段です。


3
Regex&Sed / Perl:ISNの前に別の単語がない単語に一致
前に特定の単語がない単語をすべて使用sedまたはperl置換したい。 たとえば、映画のプロットが含まれているテキストファイルがあり、出現するすべてのキャラクターの姓を名に置き換えたいのは、姓が姓の直前にない場合のみです。 サンプルテキストは次のようになります。 John Smith and Jane Johnson talk about Smith's car. 私はそれをこのように見せたいです: John Smith and Jane Johnson talk about John's car. 私がちょうどするならsed 's/Smith/John/' file、私は持っているでしょう: John John and Jane Johnson talk about John's car. 姓の前にある名は常に同じになります。私はに対処する必要はありませんJohn SmithとFrank Smith。私SmithはJohnそれに先行していないマッチする方法が必要です。



2
sedの正規表現文字をエスケープして、正規表現文字として解釈する必要があるのはなぜですか?
例えばそうです cat sed_data.txt | sed 's/\b[0-9]\{3\}\b/NUMBER/g' 、私がすることをしなければならない正規表現を形成するために、文字をエスケープします。この場合、何度も解釈されるために中括弧をエスケープする必要がありました。 どうして?エスケープされない限り、すべてが正規表現文字になると期待していました。すなわち反対です。

7
単語を改行で置き換える方法
次のデータを含むテキストファイルがあり、各行の末尾は|END|です。 T|somthing|something|END|T|something2|something2|END| 私はsed |END|で\n新しい行に置き換えることを試みています。 sed 's/\|END\|/\n/g' test.txt しかし、それは以下のような間違った出力を生成しています: T | s o m e ... しかし、私が欲しいのはこれです: T|somthing|something T|something2|something2 私も試してみましたtr。それもうまくいきませんでした。

2
BashにPerl RegExエンジンの使用を強制する
すでにご存じかもしれませんが、最新のRegExエンジンがサポートする機能の多く(後方参照、ルックアラウンドアサーションなど)は、Bash RegExエンジンではサポートされていません。以下は、私の最終目標が何であるかを説明するために作成した単純なBashスクリプトです。 #!/bin/bash # Make sure exactly two arguments are passed. if [ $# -lt 2 ] then echo "Usage: match [string] [pattern]" return fi variable=${1} pattern=${2} if [[ ${variable} =~ ${pattern} ]] then echo "true" else echo "false" fi したがって、たとえば、次のようなコマンドはfalseを返します。 . match.sh "catfish" "(?=catfish)fish" 一方、PerlまたはJavaScriptの正規表現テスターで使用すると、まったく同じ式で一致が検出されます。 後方参照(例(expr1)(expr2)[] \ 1 \ …

3
cpでの正規表現の使用
これは簡単な質問です。現在のディレクトリにある「axis-2」で始まり「.jar」で終わるすべてのファイルをターゲットディレクトリにコピーしようとしています。たとえば、〜/ MyDirectoryだとしましょう。私の最初の考えはしようとすることでした cp '^axis2.*jar$' ~/MyDirectory しかし、これは機能していません。cpで正規表現を使用できるかどうかさえわかりません。また、しばらくの間正規表現を実際に使用していないため、構文が完全にオフになっている可能性があります。私が試してみると、cpは「そのようなファイルまたはディレクトリはありません」というエラーメッセージを出力します。誰もがこれに対処する方法について何か提案がありますか?ありがとう!

5
文字列内の位置に基づいて可変数の先行ゼロを追加する拡張正規表現を実装する
数値の体系的なスキームにさまざまな数の先行ゼロを追加するためにsed構文を取得するのに問題があります。操作している弦は 1.1.1.1,Some Text Here sed構文を活用する sed -r ":r;s/\b[0-9]{1,$((1))}\b/0&/g;tr" 私は反応を引き出すことができます 01.01.01.01,Some Text Here ただし、私が探しているのは、フィールド2と3に最大2桁、フィールド4に最大3桁をゼロで埋めて、すべてのアイテムが[0-9]。[0-9]で標準の長さになるようにすることです。 2}。[0-9] {2}。[0-9] {3} 1.01.01.001,Some Text Here 私の人生では、境界を変更して、ピリオドに続く数字のみにスナップするために必要なパラメーターを含める方法すら理解できません。私は理解している\ bの使用に何らかの関係があると思いますが、単語の境界でゼロ文字と一致しますが、ピリオドを一致に追加しようとすると次のように失敗する理由がわかりません。 sed -r ":r;s/\.\b[0-9]{1,$((1))}\b/0&/g;tr" sed -r ":r;s/\b\.[0-9]{1,$((1))}\b/0&/g;tr" Both cause the statement to hang sed -r ":r;s/\b[0-9]\.{1,$((1))}\b/0&/g;tr" sed -r ":r;s/\b[0-9]{1,$((1))}\.\b/0&/g;tr" sed -r ":r;s/\b[0-9]{1,$((1))}\b\./0&/g;tr" cause the statement to output: 1.01.01.1,Some Text Here …

2
正規表現による特殊文字のマッチング
小文字と数字を含む何かを見つけたい場合は非常に簡単だとしましょう produce_text | grep -E '[0-9a-z]' ブラケットは一連の文字を照合するのに役立ちますが、やや特殊なものはどうでしょうか。 私は、ブラケットを使用して、一致させたい場合は任意の文字が、閉じ括弧:これらのいずれかの]「 - 」は、両方のスラッシュ、ダッシュ(ハイフン)/と\、キャレット^、コロンを:。 このように見えますか(これは機能しません)。 [^]-/ \ ^:]

3
「ls -a |」の奇妙な動作 grep ^ \。」
pwdのコンテンツをリストし、ドットで始まるファイルのみを表示したいと思いました。試しましたls -a | grep ^\.が、ドットで始まらないファイルが出力に含まれる理由がわかりません。例えば: Pictures .pip .pki .profile projects Public 自分がやりたいことを達成できることはわかってls -ld .*います。説明できないgrepのこの動作に興味があります。


4
\\を使用する正規表現と\を使用する正規表現
どして grep e\\.g\\. <<< "this is an e.g. wow" そして grep e\.g\. <<< "this is an e.g. wow" 同じことをしますか? 3番目のスラッシュを追加すると、同じ結果になります。しかし、4番目のスラッシュを追加すると、機能しなくなります。これは、クラスの古い試験の質問に関係しています。2つのバックスラッシュのあるものは、「eg」で行を出力するために機能するかどうか尋ねましたが、最初は機能しないと思っていましたが、確認してみました。説明は何ですか?


2
デフォルトで拡張正規表現モードを使用してsedにならないのはなぜですか?
私はsedを使用しています。私の知る限りでは正しい正規表現を使用していましたが、sedは何もしませんでした。私が\s+理解できないsed を使用していたことがわかりました、そして私が[ ]+それに切り替えたときはうまくいきました。 要約すると、私は正規表現を作成しました。それを機能させるには、ほとんどすべてをエスケープし\s、空白を削除する必要がありました。これらすべてを回避するモードがあるようです-rので、私は尋ねたかった: なぜ-rsedのデフォルトモードではないのですか?すべてを脱出するためになぜそんなに多くのトラブルに行かなければならなかったのですか? manオプションが--posixあり、「POSIX.2 BREをサポートする必要がある」と述べています。これは何を意味しますか?NFA / DFAモード?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.