私はJava regexパッケージを使用するPentahoに取り組んでいます:java.util.regex。私は無視してしようとする文字列の長い部分があるRegex - 文字列の一部を無視する
^StartofString Controls\(param1="(D[0-9]{0,})",param2="(G[0-9]{0,})",param3="([^"]{0,})",param4="([^"]{0,})"\):(?:.*)param5="([^"]{0,})",.*
:
は、私は両方の開始と、文字列の末尾からテキストファイルの行から多くの情報を抽出したいですdo with so (?:.*)
ステップでRegexをテストすると正の先読みが機能しているように見えますが、変換を実行すると機能しません。 私は、「フィルター行のJavaScriptステップ内で、前のステップと抽出グループのブールに確認し、「正規表現の評価」段階に文字列をテスト:patterStrが1つ以上同じ正規表現された状態で
var pattern = Packages.java.util.regex.Pattern.compile(patternStr);
var matcher = pattern.matcher(content.toString());
var matchFound = matcher.find();
" \
正規表現で文字列の一部を無視することについて多くの質問を読んだが、答えが見つからない。 何か助けを歓迎します。 必要に応じてより多くの情報を提供できます。
ないアイデアをどのようなあなたの問題はです。一つのことは確かです。 '(?:。*)'はキャプチャしていないグループであり、先読みではありません。 –
変換コードを確認できますか?非キャプチャグループを使用すると、そのトリックは実行されません。非キャプチャグループとは、キャプチャグループが存在しないことを意味しますが、一致するテキストはまだ出力に存在します。グループではない – Aaron
...私はキャプチャしていないグループと先読みを混ぜています。私が望むのは、param5に達するまで、文字列の大きな部分を捕まえないことです。 完全な変換を見るとどのように役立つのかわかりません。私が表示すべきではない分かりやすい情報があります。 – v01dv01d