2

私は次の文字列を持っています:

"\t Product:         ces DEVICE TYPE \nSometext" //between ":" and "ces" are 9 white spaces

「デバイスタイプ」の部分を解析する必要があります。私は正規表現でこれを行おうとしています。私はこの式を使用しますが、これは機能します。

((?<=\bProduct:)(\W+\w+){3}\b)

この式は次を返します。

"         ces DEVICE TYPE"

問題はここにあります:いくつかのデバイスはこのような文字列を持っています:

"\t Product:         ces DEVICETYPE \nSometext"

同じ式を使用してデバイスタイプを解析すると、結果として次のようになります。

"         ces DEVICETYPE \nSometext"

\ nが見つかったときに正規表現を停止するにはどうすればよいですか?

4

3 に答える 3

2

おそらくこれ?

(?<=ces)[^\\n]+

必要なのは、cesの後と\nの前にあるものだけです。

于 2012-11-22T10:22:40.887 に答える
2

.NETではを使用できますRegexOptions.Multiline。これにより、との動作が変わり^ます$
文字列の開始と終了を意味するのではなく、文字列内の任意の行の開始と終了を意味するようになりました。

Regex r = new Regex(@"(?<=\bProduct:).+$", RegexOptions.Multiline);
于 2012-11-22T10:37:25.973 に答える
1

あなたが使用することができます:

(?m)((?<=\bProduct:).+)

説明:

(?m)((?<=\bProduct:).+)

Match the remainder of the regex with the options: ^ and $ match at line breaks (m) «(?m)»
Match the regular expression below and capture its match into backreference number 1 «((?<=\bProduct:).+)»
   Assert that the regex below can be matched, with the match ending at this position (positive lookbehind) «(?<=\bProduct:)»
      Assert position at a word boundary «\b»
      Match the characters “Product:” literally «Product:»
   Match any single character that is not a line break character «.+»
      Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»


or

    ((?<=\bProduct:)[^\r\n]+)

説明

((?<=\bProduct:)[^\r\n]+)

Match the regular expression below and capture its match into backreference number 1 «((?<=\bProduct:)[^\r\n]+)»
   Assert that the regex below can be matched, with the match ending at this position (positive lookbehind) «(?<=\bProduct:)»
      Assert position at a word boundary «\b»
      Match the characters “Product:” literally «Product:»
   Match a single character NOT present in the list below «[^\r\n]+»
      Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
      A carriage return character «\r»
      A line feed character «\n»
于 2012-11-22T10:20:01.050 に答える