私は正規表現に非常に慣れていないので、正直言って混乱しています。上記の文字列で特定の文字に達した後、文字列を取得する必要があります。これを行う最も簡単な方法は正規表現を使用することだと思いましたが、私が言ったように、私はそれに非常に慣れていません。誰かがこれを手伝ったり、正しい方向に向けたりできますか?
例: 文字列 "23444:thisstring" を確認し、"thisstring" を新しい文字列に保存する必要があります。
これがあなたの文字列の場合:
I'm very new at regex, and to be completely honest it confounds me
最初の「c」以降のすべてを取得したい場合は、次の正規表現が機能します。
/c(.*)/s
最初に一致したグループでこの一致を返します。
"ompletely honest it confounds me"
ここの正規表現テスターで試してみてください:正規表現テスター
説明:
c
キャラクターです.*
(と組み合わせて/s
) 残りのすべてに一致(.*)
.*
一致したものをキャプチャし$1
、リスト コンテキストで使用可能にして返します。特定の文字の前の文字を削除するための正規表現!
このように先読みを使用できます
.*(?=x)
ここで、x は特定の文字、単語、または文字列です。{、、、、などの文字を使用.
すると$
、正規表現で特別な意味を持つため^
、x 内で使用する場合はエスケープすることを忘れないでください}*
+
編集
サンプル文字列の場合は次のようになります
.*(?=thisstring)
.*
0 から多くの文字まで一致thisisstring
これは、「前」の後のすべてを一致させるための1行のソリューションです
print $1."\n" if "beforeafter" =~ m/before(.*)/;
編集:後読みの使用は可能ですが、必須ではありません。グループ化すると、より簡単なソリューションが提供されます。
の前に文字列を取得するには: あなたの例では、を使用する必要があります[^:][^:]*:\(.*\)
。少なくとも 1 つの s の後[^:]
に任意の数の[^:]
s が続き、その後に実際の :, 検索する文字が続く必要があることに注意してください。