0

ここに画像の説明を入力してくださいサンプルテキスト:

エンジニアリング| AB7407 | 007412665 | ジャッキー・ブラウン| 建設のための図面

2つの正規表現が必要です。最初のパイプAB7407の後に2番目の値を与えることができ、2番目のRedexは2番目のパイプ007412665の後に3番目の値を与えることができます

フォローしてみましたが、サンプルテキストが返されます。

^(?<field1>[^|]+),(?<field2>[^|]+),(?<field3>[^|]+),(?<field4>[^|]+),(?<field5>[^|]+)$

結果:

エンジニアリング| AB7407 | 007412665 | ジャッキー・ブラウン| 建設のための図面

誰かが私の正規表現で何が起こっているかを提案できますか?

4

4 に答える 4

4

私はこれを行います:

 string original = "Engineering | AB7407 | 007412665 | Jackie Browne | Drawing for Construction";
 string[] split = original.Split('|');
 string firstcode = split[1];
 string secondcode = split[2];

先頭/末尾の空白をすべて削除する場合:

string secondcode = split[2].Trim();
于 2012-10-25T17:11:36.340 に答える
2
Dim x = "Engineering | AB7407 | 007412665 | Jackie Browne | Drawing for Construction"
Dim parts = x.Split(" | ")

parts(1)文字列の2番目のチャンクがparts(2)含まれ、3番目のチャンクが含まれます。これはVBですが、c#や使用しているもののアプローチは似ています。

正規表現を修正するには:

^(?<field1>[^|]+) \| (?<field2>[^|]+) \| (?<field3>[^|]+) \| (?<field4>[^|]+) \| (?<field5>[^|]+)$

2つの正規表現が必要な場合は、

(?<=^[^|]+ \| )[^|]+

2番目のチャンクと一致し、

(?<=^(?:[^|]+ \| ){2})[^|]+

3番目に一致します。

于 2012-10-25T17:09:49.183 に答える
0

正規表現はこれを処理するための間違った方法です。cut -f 2,3 -d '|'コマンドラインであなたが探しているものを提供します。

すべてのプログラミング言語には、パイプ区切り文字に基づいて文字列を文字列の配列に変換する文字列分割関数が必要です。正規表現の代わりにそれを使用してください。

于 2012-10-25T17:09:59.263 に答える
0

グループを使用する

^(?<field1>.*?)\|(?<field2>.*?)\|(?<field3>.*?)\|(?<field4>.*?)\|(?<field5>.*?)$

グループに名前が付けられfield2field3データが含まれています

于 2012-10-25T17:18:13.070 に答える