昨日、いくつかのユーザーをバッチで処理する必要があるという小さな問題が発生しました。フロントデスクから送信されたユーザーの形式は次のとおりです(括弧なし)。
先生10(0010)
ティーチャー11(0011)
ティーチャー9(009)
ティーチャー12(0012)
ティーチャー13(0013)
ティーチャー14(0014)
本当はJavaのString.split()やsubstring()を使ってやりたかったのですが、何度も処理するのが面倒だったので正規表現を使いました。構文はほとんど忘れてしまいましたが、アサーションを使用する方が便利だと思います (重要なのは、結果に括弧が含まれていないことを期待することです)。 RegexBuddy を開いて試してみてください。簡単に実行できます。
Java 実装コードは次のとおりです。
最後に、使用されるゼロ幅アサーションを次に示します。
幅広い主張 | (?=exp) | exp の前の位置を一致させる |
---|---|---|
(?<=exp) | exp の後の位置を一致させる | |
(?!経験値) | exp が後に続かない位置に一致します | |
(?<!exp) | exp が前にない位置に一致します |