
VB.NETで正規表現を使って2つの文字列に囲まれた部分を
取得したいのですが、文字列の先頭と末尾の部分の<BR>の行と
空行を削除したいです。
具体的には対象の文字列が
”ABC
<BR>
<BR>
あいうえお
<BR>
かきくけこ
<BR>
さしすせそ
<BR>
<BR>
<BR>
XYZ”
となっていた場合に
”あいうえお
<BR>
かきくけこ
<BR>
さしすせそ”
を取得したいです。
現在このようになっています。
Public STR As String
Sub Form1_Load
Dim sr As New System.IO.StreamReader("c:\0.html", system.Text.Encoding.Default)
STR = sr.ReadToEnd
TextBox2.Text = "(?<data>.+?)"
End Sub
Sub Button1_Click
Dim A As String = "ABC"
Dim Z As String = "XYZ"
Label1.Text = A & TextBox2.Text & Z
Dim r As New Regex(Label1.Text, RegexOptions.Singleline)
Dim m As System.Text.RegularExpressions.Match
Try
TextBox1.Text = r.Match(STR).Result("${data}")
Catch ex As Exception
Console.WriteLine("Error")
End Try
End Sub
<BR>が<br>や<Br><bR>< br >などにも対応したりと
条件がいろいろありすぎて色々試したのですが、
どうしても分かりませんでした。
申し訳ございませんが、お助け頂ければ幸いです。
No.1ベストアンサー
- 回答日時:
空行を検知する方法は分からないけど、「<BR>が<br>や<Br><bR>< br >など・・・・」は「<\s*[Bb][Rr]\s*>」にマッチするんじゃないかな。
「開きカク括弧が1文字あり、空白(\s)が0文字以上続き、Bまたはbが1文字あり、Rまたはrが1文字あり、空白が0文字以上続き、閉じカク括弧が1文字ある」というパターンになる。「<\s*[/]?[Bb][Rr]\s*>」とすると、</BR>もひっかかるかも。「<\s*[Bb][Rr][/]?\s*>」だと<BR/>もOKかも。全然試していないので色々試行錯誤をしてみてくらはい。
anmochi様ご回答ありがとうございます。
お二人のご回答ともに大変参考になりました。
無事目的の文字列を取得することができました。
ありがとうございました。
No.2
- 回答日時:
行頭がABCではじまってそれに続く<BR>と空行は
^(ABC\s+((<\s*[/]?br[/]?\s*>\s+)*)\s+)
でよさそうです
単なる空行は
^(\s)
行末がXYZで終わってその前にある<BR>と空行は
((<\s[/]?br[/]?\s*>\s+)*)\s+(XYZ)$
といった具合です
これを regexのReplaceにかけてやれば良いようですが
dim sPat as String = "^(ABC\s+((<\s*[/]?br[/]?\s*>\s+)*)\s+)|" _
"^(\s)|((<\s[/]?br[/]?\s*>\s+)*)\s+(XYZ)$"
Dim r As New Regex(sPat, RegexOptions.MultiLine or RegexOptions.IgnoreCase)
TextBox1.Text = r.Replase(STR,"")
といった具合で ・・・
redfox63様ご回答ありがとうございます。
お二人のご回答ともに大変参考になりました。
無事目的の文字列を取得することができました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ダブルコーテーション(
-
【PHP】preg_replace() で正...
-
C++で空Enterの入力を判...
-
VBAのコマンドボタンの文字列の...
-
エクセルのCOUNTIFが正しくカウ...
-
VBAでCSVをExcelに取り込む時に...
-
文字化け変換方法
-
文字の入力で横バー上段、中断...
-
vbsで2文字以上の空白を改行に...
-
jsp 改行コードで改行させて表...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
JavaDoc コメントの改行について
-
C言語の標準入力で改行しない方法
-
\\nと\\rの違い
-
文字コードの検出が正しいかを...
-
メッセージボックスで1025文字...
-
htmlのソースからテーブルの値...
-
IT企業の技術屋にとって全角英...
-
vb.netでのリッチテキストボッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルコーテーション(
-
文字列の置換をCStringで(C++)
-
preg_replace()でマッチ文字列...
-
文字列の結合について
-
○分から○時間○分に変換
-
追伸します。
-
phpで文字列の一部を基準にして...
-
PHPで「,」を「, 」へ置換した...
-
正規表現。指定文字列を抜き出...
-
デザインとテキストを分離しま...
-
php 正規表現で、\\マークを取...
-
mcryptで英数字(12未満)のみに...
-
文字列関数について
-
print<<<EOM~EOM; の中のデー...
-
冗長コードのfunction化と汎用化
-
DOCOMOの機種判別でみたことな...
-
入力文字に\\マークが入ってい...
-
PHPの¥
-
(から)までの文字列を削除したい
-
2バイトローマ数字小文字につ...
おすすめ情報