10

ここに文字列がありますThis is a string: AAA123456789

AAA123456789したがって、ここでのアイデアは、正規表現を使用して文字列を抽出することです。

これをX-Pathに組み込んでいます。

注: これに対する投稿がある場合は、親切にそこに誘導してください。

substring(myNode, [^AAA\d+{9}])私は、当然、そうすべきだと思います。

正規表現の部分についてはよくわかりません。

アイデアは、「AAA」と数字のみが一致したときに文字列を抽出することですが、結果として9つの数字のみが抽出されます。

4

4 に答える 4

10

純粋な XPath ソリューション:

substring-after('This is a string: AAA123456789', ': ')

生成します:

AAA123456789

XPath 2.0 ソリューション:

tokenize('This is a string: AAA123456789 but not an double',
              ' '
              )[starts-with(., 'AAA')]

また:

tokenize('This is a string: AAA123456789 but not an double',
              ' '
              )[matches(., 'AAA\d+')]

また:

replace('This is a string: AAA123456789 but not an double',
              '^.*(A+\d+).*$',
              '$1'
              )
于 2012-09-20T12:49:59.407 に答える
4

さて、ここで素晴らしい人々による回答とコメントを参照した後、私が選択したこのソリューションで調査結果を要約しました. ここに行きます、

concat("AAA", substring(substring-after(., "AAA"), 1, 9)).

そこで、まず最初の引数として「AAA」を含む文字列の後の substring-1 から 9 までの長さで、それ以上は無視します。次に、AAA を参照として使用したため、これは表示されないため、値の前に AAA を連結します。したがって、これは、AAA の後に最初の 9 桁を取得し、静的データであるため、前に AAA を連結することを意味します。

これにより、他にどのような貢献があったとしても、データを正確にすることができます。

しかし、@ Dimitreによる正規表現が好きです。交換部品です。トークン化は、引数としてスペースがない場合とは異なります。正規表現に置き換える、これも素晴らしい。ありがとう。

そして、そこにいるあなたたちに感謝します...

于 2012-09-21T09:08:27.443 に答える
1

まず、あなたが持っているつもりはないと確信しています[^ ... ]。これは「負の文字クラス」を定義します。つまり、現在の正規表現は「次のいずれでもない単一の文字を教えてください: 」と言います。あなたはおそらく、明らかに、を意味しました。現在、この便利なWebサイトによると、XPathはキャプチャグループと後方参照をサポートしているので、選択してください。A0123456789{}"AAA(\d{9})"

"AAA(\d{9})"

$1そして、最初のキャプチャグループを抽出する、または:

"(?<=AAA)\d{9}"

そして、試合全体を取ります($0)。

于 2012-09-20T07:44:04.803 に答える
1

これを試すことができますか:

あ{3}(\d{9})

于 2012-09-20T08:02:52.010 に答える