2016-04-12 1 views
0

が含まれているが、私は、テキスト内の文字列を一致させたい場合は:1324ストリングではありませんマッチAZまたはAZが先行していない文字列、およびその正規表現を使用して1324

  • 列として彼らは 1324が含まれている

    1. 例えばa-zA-Z

    のような1つの以上の文字が前に:

    • '1324testは'
    • '1324' を一致させる必要があり
    • 'test test :/1324test' を一致させる必要があり
    • 'test test 1324test' を一致させる必要があり
    • 'test test 1324' を一致させる必要があり
    • を一致させる必要がある 'test test test1324test' はずNOT一致する

    ここは私のttempt:

    私はこれをどのように行うことができますか?

    +0

    によって与えられるであろう...あなたは' 1324'意味ですか? –

    +0

    @ l'L 'l、はい、申し訳ありません、それはタイプミスです、私はそれを修正しました。 –

    +0

    正規表現の言語は何ですか? –

    答えて

    2

    使用この正規表現:

    (?<![a-zA-Z])1324 
    

    Live Demo on Regex101

    それは、負の後方参照を使用しています(ここでは、それらを説明するnice siteです)。これは、任意の文字([a-zA-Z])があるかどうかを確認するために(それを後読み)1324の後ろにチェックすることを意味します。存在する場合、それは失敗するでしょう。

    Demo

    +0

    うわー!わずか37歩! –

    2

    使用負の後読み:

    .*(?<![a-zA-Z])1324.* 
    
    +1

    '。*'部品のポイントは何ですか? –

    +0

    なぜ '。*'ですか?なぜそれらを削除しないのですか? https://regex101.com/r/cQ6yW2/6は、100以上のステップ(25ステップと比較して44ステップ)を減らしています。 –

    +0

    あなたの質問は、正規表現で** ** 1324を含む文字列が部分文字列(要件の第1ポイント)と一致するように明示的に述べているので、あなたが提供した正規表現は、残りの部分ではなく、文字列の1324部分にのみ一致します。私の正規表現は文字列全体と一致します。 – MNos

    1

    あなたの正規表現の風味が負のルック尻(例えば、JS)をサポートしていない場合は、文字列または非アルファキャラクターの

    (^|[^a-zA-Z])1324 
    

    マッチ開始でそれを行うことができます。ここで

    1

    は私の試みです。プラスリンクが必要とされていない:私はあなたの第二のテストケースがない1234

    ([^a-zA-Z]+|^)1324 
    

    Here is a test link

    更新されるべきだと思います。広告オーバーヘッドにすぎません。適切な例は、あなたが、あなたが、その後、キャプチャを調べたいん何をキャプチャし、キャプチャなしたくないものに一致させることができ、この

    ([^a-zA-Z]|^)1324 
    

    Regular expression visualization

    Debuggex Demo

    +0

    申し訳ありません、それはタイプミスですが、私はそれを修正しました –

    +0

    なぜ '+'を追加する必要があるのですか? '+'なしでうまくいくと思いますか?たとえば、https://regex101.com/r/kU4hG9/1です。「+」の導入は約40の追加ステップを追加しています。 –

    +1

    はい、プラス記号なしで動作し、オーバーヘッドを追加するだけです。正規表現は、マッチの前の1文字をチェックするだけです。私は投稿した後にそれを実現しました。残念ながら私はすでに投稿しており、今変更するには悪いネチケットになると思っていました。私はまだそれを変更していないが、私はそれを更新しています。 – voger

    0

    する必要があります部分。 JavaScriptで

    /[a-z]1324|(1324)|.*/i 
    

    、あなたの試合では、 `1234`を表示し、あなたの第二の例では

    !!input.match(regexp)[1] 
    
    +0

    あなたの返答をありがとうございますが、提供されたテキストに1324が含まれていない場合に失敗したと思います、 '!!" test test test "match(/ [az] 1324 |(1324)/ i)[1] '...この答えでは、一致が空でない配列を返すと仮定しました。空の配列がこの例のように返された場合はどうなりますか?エラーがスローされます: 'Uncaught TypeError:ヌルのプロパティ '1'を読み取れません。 ' –

    +0

    あなたは正しいです。一定。 –

    関連する問題