2017-07-31 8 views
0

JAXを使用してWordXmlパーサーを実行していますか。いくつかのシナリオで正規表現パターンを作成する方法

今、私は(F(1) = 44)のこのタイプのパターンが段落に出現するかどうかをチェックしたいと思います。

注:オープンクローズの内部には整数値が必要です。

フォローイングパターンを確認する必要があります。

(text text (text) text) 
(F(1) = 44) 
(text text [text] text) 
[text text (text) text] 

しかし、明らかに、シナリオの上に正規表現パターンを作る方法はわかりません。

だから私にお勧めします。誰もが私に知らせるpls。

+0

https://regex101.com/ –

+0

「誰かが私のためにこれを行うことができますか?あなたがどこにいるのか分からないことを示す完璧です.SOはコードを提供しません。あなたがしたことに役立ちます。 – azro

+0

'str.contains("(F)= 44) ")'を使用します。 – saka1029

答えて

1

あなたは\s*

  • が続く一つ以上のスペースが続く括弧\(\d+\)
  • 間の1つ以上のdegit続い

    • 一つ以上のアルファベット[a-zA-Z]+
    • を意味し、この正規表現\([a-zA-Z]+\(\d+\)\s*=\s*\d+\)を、使用することができます次に等価で=
    • 、次に1つ以上のスペース
      String[] texts = new String[]{"(text text (text) text)", 
          "(F(1) = 44)", 
          "(text text [text] text)", 
          "[text text (text) text]"}; 
      String regex = "\\([a-zA-Z]*\\(\\d+\\)\\s*=\\s*\\d+\\)"; 
      
      for (String s : texts) { 
          Pattern pattern = Pattern.compile(regex); 
          Matcher matcher = pattern.matcher(s); 
          if (matcher.find()) { 
           System.out.println("There are match " + matcher.group()); 
          } else { 
           System.out.println("No match occurred"); 
          } 
      } 
      

      出力

      No match occurred 
      There are match (F(1) = 44) 
      No match occurred 
      No match occurred 
      
    • は、一つ以上のdegit括弧\([a-zA-Z]+\(\d+\)\s*=\s*\d+\)このようなパターンで

    \d+

  • すべてこれで、その後に続きます10

    regex demo

  • +0

    thnks。本当に助けられました。しかし、String text =(テキストテキスト(テキスト)テキスト); \t文字列text1 =(F(1)= 44); \t文字列text2 =(テキストテキスト[テキスト]テキスト); \t文字列text3 = [テキストテキスト(テキスト)テキスト]; \t \tこれはすべて別々のStringです。これでtext1の正規表現パターンが得られました。 Amは他のシナリオを試みたが、仕事はしなかった。 –

    +0

    あなたは@ sathishanishを何を意味しましたか –

    +0

    @sathishanishこの分離されたテキストが私の編集の希望をチェックすれば、これはあなたを助けることができます –