2017-07-10 5 views
1

正規表現を使用している文字列の下に、UIMA RUTAの注釈を付そうとしています。uimaのregexを使って以下の文字列を検出するRUTA

SAMPLE:

  • ******* $ 10.00 *

その他のバリアント:

  • ****** * $ 10.00 ***
  • ******* $ 90.00 *
  • ******* $ 99 **

    正規表現:。* + \ $の\ dが+ \ D + * +

UIMA正規表現:

SPECIAL{REGEXP("\\*+\\$\\d+.\\d+\\*+") -> MARK(AmC,1)}; 

私はのように*検出貪欲正規表現を表現することはできませんが、私は、エスケープ文字を使用していると()、まだ何かがmissing.Anyの回避策はありますか?

PS:それは他の正規表現エンジンのために働いていますが、

+0

のデベロッパー)。また、境界マーカーが必要なのでしょうか? –

+0

'SPECIAL {REGEXP("。* \\ * + \\ $ \\ d + \\。\\ d + \\ * +。* ") - > MARK(AmC、1)}; –

+0

@TimBiegeleisen regex101.comでテストしたがUIMA RUTAで作業していないときに動作しています。 – Gaurav

答えて

1

UIMA RUTAで働いていないREGEXP条件はルール要素の一致した注釈の屋根付きテキスト上でJavaパターンmatches()を適用します。あなたの例では、これは単一の特殊文字であるSPECIALです。したがって、正規表現は1つの "*"とその後の次の文字(数字とピリオドを除く)にマッチするように試みました。

ここでREGEXP条件は実際には適していません。

"\\*+\\$\\d+.\\d+\\*+" -> AmC; 

免責事項:あなたはかなりのように、単純な正規表現のルールを使用する必要があり、私はあなたが(あなたが脱出を倍増する必要があると仮定して、アスタリスクの前に最後のバックスラッシュをエスケープ倍増するのを忘れUIMAルタ

+0

魅力のように動作します。このような華麗な説明に感謝します。 – Gaurav

関連する問題