1

次のテキストがあります。

  1. BizTalk に要求を送信します。CaseID: '2011000264'、タイトル: 'ArchiveDocument Poup - fields.docx'、日付: '11.01.2013 13:15:28'
  2. BizTalk に要求を送信します。タイトル: 'Jallafields.docx'、日付: '11.01.2013 13:15:28'

を解析したいと思いTitleます。これはかなり簡単なはずですが、苦労しているので、どんな助けも大歓迎です。

4

4 に答える 4

4

あなたのテキストを以下と一致させてください:

\bTitle: '([^']+)'

最初のグループをキャプチャします。

もちろん、これは、埋め込まれた一重引用符がないことを前提としています...ある場合は、次のようにnormal* (special normal*)*「正規表現パターン」を使用します(この例では、このような埋め込まれた引用符がバックスラッシュでエスケープされていると想定しています)。

\bTitle: '([^\\']+(?:\\'[^\\']*)*)'

ここで、normalis [^\\'](バックスラッシュまたは一重引用符以外)とspecialis \\'(バックスラッシュの後に一重引用符が続く)です。そして、これは、頻繁に使用される(使いすぎ?)怠惰な数量詞では実行できない種類のことです;)

于 2013-01-11T14:44:31.510 に答える
3

Regex/LINQ の楽しみのためだけに:

var s = "Send Request to BizTalk. CaseID: '2011000264', Title: 'ArchiveDocument Poup - fields.docx', Date: '11.01.2013 13:15:28'"   ;
var d = Regex.Matches(s, @"(?<=[\W])(\w*):\W'([^']*)'").OfType<Match>().ToDictionary (m => m.Groups[1].Value, m=>m.Groups[2].Value);

d今でしょ

ここに画像の説明を入力

J̶u̶s̶t̶ ̶h̶o̶p̶e̶ ̶t̶h̶e̶r̶e̶'̶s̶ ̶n̶o̶ ̶ ̶'̶̶i̶n̶ ̶t̶h̶e̶ ̶t̶i̶t̶l̶e̶,̶ ̶t̶h̶o̶u̶g̶h̶.̶.̶.

埋め込まれた一重引用符を処理するには、fge が彼の素晴らしい答えで示唆しているように、'([^']+)'その部分をに置き換えるだけです:'([^']+(?:\\'[^']*)*)'

于 2013-01-11T14:57:14.940 に答える
1

正規表現はこれにはやり過ぎです。

string.Split代わりに使用してください:

myString.Split('\'')[3]

それを少し分解するには-この場合myString.Split('\'')、渡された文字で文字列を分割し、'結果の配列を返します。配列の4番目の値を使用して、タイトルを取得しています-配列の添え字を使用しています[3]

上記は、文字列に対して非常に厳密な構造を想定しています。


あなたが投稿した2番目の例では、上記のアプローチが機能しないことは明らかです。

于 2013-01-11T14:42:58.467 に答える
0

このように文字列を解析するとうまくいきます

String s = " Send Request to BizTalk. CaseID: '2011000264', Title: 'ArchiveDocument Poup - fields.docx', Date: '11.01.2013 13:15:28'";

string[] all = s.Split(',');

foreach( string str in all)
{
  if(str.Contains("Title:"))
  {
     Console.Writeln( (str.Split(':'))[1]);
   }
}
于 2013-01-11T14:44:17.407 に答える