- ベストアンサー
正規表現を使った文字列切り取りについての質問
- 正規表現を使用して、一重破線のみを切り取る方法について教えてください。
- 質問者は.NETで正規表現を使用して文字列切り取りを行いたいとしています。
- 質問者は具体的なコード例を提供しており、正規表現の記述方法を教えてほしいとしています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>こちらも、ヒットしませんでした 改行コードの扱いが違っていたようです perlで\nとしている部分を \r\nにしないといけないようです。 >CREATE PROCEDURE.*?\n(?<parameter>.*?)AS .*?にすると最短でマッチしようとするので、手前のASでマッチしてしまします。 あと、[]は実際には無い場合があるのですか? 改行AS改行で終わるということを制限するために "CREATE PROCEDURE.*?\n(.+)(\r\n)AS\r\n" として Result(("$1$2"))) とすればいいかもしれません。
その他の回答 (3)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
Result(("${parameter}"))) は Result(("$1"))) になります
お礼
ありがとうございます。 そのような書き方でも、マッチした部分の値をとることが できるんですね。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
"CREATE PROCEDURE \[.*\]\s(.+)AS\n" より "CREATE PROCEDURE \[.*\]\s+(.+)AS\n" のがいいかも
お礼
こちらも、ヒットしませんでした>< とりあえず、 CREATE PROCEDURE.*?\n(?<parameter>.*?)AS という記述にしたら期待したものがとれるように なりました。 (途中にsaasなどのつづりがあってもそちらでヒットしてしまい、不完全です...)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>Dim strRegex As String = "CREATE PROCEDURE(?<parameter>:a+)AS" >Dim reg As New System.Text.RegularExpressions.Regex(strRegex, RegexOptions.Multiline Or RegexOptions.IgnoreCase) の部分を Dim strRegex As String = "CREATE PROCEDURE \[.*\]\s(.+)AS\n" Dim reg As New System.Text.RegularExpressions.Regex(strRegex, RegexOptions.Multiline Or RegexOptions.Singleline Or RegexOptions.IgnoreCase) にする。 ちなみにPerl、同じ意味 $/="//\n"; while(<DATA>){ print $1 if /CREATE PROCEDURE \[.*\]\s(.+)AS\n/s; } __END__ -- aaaaaaaaaaaaeefefe CREATE PROCEDURE [opsys_parameter] @いつから AS datetime, -- 対象日 | @customer_no int, -- @aaa varchar(32) AS xxxxx bbbb ccc
お礼
ご回答ありがとうございます。 早速ためさせていただきましたが、 正規表現に該当しないため、今のところ 動いておりません。
お礼
ありがとうございました。 頂いたやり方でいけました。 正規表現 すごく覚えること多いですね。 ぜひ使いこなせるようになりたいです・・・ また、質問することもあるかもしれませんが、 その際はよろしくお願い致します。