0

文字列から単語を取得しようとしてSysdba.います。これが私の結果の例ですPRODUCTION

CAST(CASE WHEN SYSDBA.PRODUCTION.SHIPPING_COMPLETE_DATE IS NOT NULL THEN 1 ELSE 0 END AS bit) AS [Shiping Completed]]

正規表現を作成しました

Regex CatagoryRegex = new Regex(@"SYSDBA\.(.#)\.", RegexOptions.IgnoreCase | RegexOptions.Compiled);

ただし、電話しvar tmp = CatagoryRegex.Match(SelectText);ても一致しません。単純な間違いを犯している可能性が高いことはわかっていますが、それを見つけることはできません。

4

2 に答える 2

2

あなたの特定の問題は、.#「任意の文字」と一致し、その後に#文字が続くことです。

最も簡単な修正は使用することかもしれませんが.+、これはあなたがしているように見えることに対して少し粗雑です. .+?より良いステップは、(さらに先に進む必要がない限り)次までしかキャプチャしない貪欲で.ないことですが、おそらくこれよりもさらに一歩先に進むでしょう...

.キャプチャされたグループ内を防ぐには、次の式を試してください。

"SYSDBA\.([^.]+)\."

[^.]a ではない任意の文字.(文字クラスでエスケープする必要はありません) はどこにあり、+は「1 つ以上」を意味します。

キャプチャされたグループ内で許可する可能性がある場合.は、次を使用できます。

"SYSDBA\.(\S+)\."

\Sは空白以外の文字です(スペースまたは改行の場合は一致を停止します)。

于 2010-07-20T19:04:35.910 に答える
0

あなたはおそらく.*の代わりを意味し.#ます。

于 2010-07-20T19:03:48.163 に答える