No.1
- 回答日時:
純粋な正規表現では大変面倒くさいので、以下をオススメします
正規表現 \b\d+\b でマッチした文字列を数値に変換して、
その数値が範囲内である場合だけ、マッチした文字列をヒットとして扱う
もし正規表現だけで実現させたいなにか特別な理由があるならば
\b(102[4-9]|10[3-9]\d|1[1-9]\d\d|【中略】|6553[0-5])\b
No.2
- 回答日時:
こんにちは。
1024-65535という数値を正規表現でヒットできるかなんて、一般的には考えられません。
正規表現は、文字列に対するもので、文字コードを扱うというなら意味は分かりますが、
数値の範囲でマッチさせるには、一旦、Chrで、ダミーの文字を作って、そこで判定させる方法しかないはずです。
a = Chr(1024)
b = Chr(65535)
Re.Pattern = "[" & a & "-" & b & "]"
とぐらいしか思いつきません。
基本的に数値は、数値で扱うしかないと思います。
MsgBox CBool(num >=1024 and num <=65535)
No.3
- 回答日時:
#2の回答者です。
今、ふと気になったことですが、もしかしたら、文章とかの中から、数字を探しだして、それが、範囲内にあるとかでは?そういう場合は、正規表現以外には無理かもしれませんね。他では効率が悪すぎます。こうした質問というものは、えてして、いろんな条件や背景があるものですから、もしそうなら、コードが違ってきます。そういう場合、ANSIでしたら、grep の方が便利かもしれません。Unicodeですと、かなり選択肢が減ります。
No.4
- 回答日時:
こんにちは。
お邪魔します。VBSですが、ベタに書いてみました。
もっとも、"1024"-"65535"の数字だけを抜き出す方法、ということですが。
' 数値 → 60000-64999|65 000-499 |655 00-99|6553 0-5 |10000-59999|2000-9999|11 00-99 |10 30-99 |102 4-9
' 桁 → ⑤ ④ 3-1 |④ ③ 2-1 |③ ② ① |②① | ⑤ 4-1 |④ 3-1 |④ ③ 2-1 |43 ② 1 |4-2 ①
regexp.Pattern = "\D0*(6([0-4]\d{3}|5([0-4]\d{2}|5([0-2]\d|3[0-5])))|[1-5]\d{4}|[2-9]\d{3}|1[1-9]\d{2}|10[3-9]\d|102[4-9])\D"
このパターンで、
hoge = matchcollection(i).SubMatches(0)
みたいな感じです。
コメントは等倍フォントで見ると、各桁の表現を示唆しています。
パターン冒頭の0*は、"01024"-"09999"等にもマッチさせたい場合のものです。
本当は、4桁数値文字列の場合だけ
前後の\Dは外せないので、用途によっては使い物にならないかも知れませんけれど、、、。
No.6ベストアンサー
- 回答日時:
この質問は、質問者さんがフィードバックするわけでもないし、回答側がいろんな想像をしながら、回答しているわけで、これも、その一つなんでしょうけれどもね。
でも、#3でもかきましたが、Perl を使えとまでは言いませんが、テキストファイルなら、grep で十分なのですね。windows用のgrep というのもあります。しかし、kwic(key word in context)のコンコーダンスを作る目的なら、話は違ってきます。
'//Wscript で、argumentは、ドラッグして入れてください。
'//
Dim Matches
Dim Match
Dim objFso
Dim objTxIn
Dim TxIn
Dim Tx
Dim fname
Dim buf
Set objFso = CreateObject("Scripting.FileSystemObject")
If WScript.Arguments.length =0 Then
WScript.Echo "ファイルをドラッグして、このファイル名にDropしてください。"
WScript.Quit
End If
fname =WScript.Arguments.Item(0)
If objFso.GetExtensionName(fname) = "txt" Then
Set objTxIn = objFso.OpenTextFile(fname)
Tx = objTxIn.ReadAll()
Else
WScript.Echo "拡張子がtxtではありません。"
WScript.Quit
End If
With CreateObject("VBScript.RegExp")
.Pattern = "\b([\d,]{4,6})\b"
.Global = True
Set Matches = .Execute(Tx)
For Each Match In Matches
buf = buf & " " & CheckFigures(Match.Value)
Next
End With
If Trim(buf) <> "" Then
WScript.Echo buf
End If
Function CheckFigures(byval num)
Dim num2
If IsNumeric(num) Then
num2 = CLng(num)
If num2 >=1024 And num2 <=65535 Then
CheckFigures =num
Else
CheckFigures =""
End If
End If
End Function
'///
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- その他(プログラミング・Web制作) VB.NETの正規表現について 4 2022/04/12 16:54
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/03/04 09:54
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/02/18 11:30
- 統計学 統計検定2級の過去問について 1 2023/01/04 16:40
- Visual Basic(VBA) 昨日、質問した件『VBA にて、条件付き書式で背景色を設定しているセルの範囲で、背景色付きのセルをカ 4 2022/04/07 14:39
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/02/10 11:41
- その他(コンピューター・テクノロジー) 正規表現の置換で数値を合計したいです。 2 2022/10/17 11:01
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/15 08:30
- PostgreSQL 数値が定期的にあらわれる文字列から、いくつめに出現した数値が指定して切り出したい 1 2023/06/08 13:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メールアドレスの正規表現について
-
正規表現で一致しない(否定)場...
-
(秀丸)正規表現で、特定文字列...
-
さくらエディタでGrep検索する...
-
grepの正規表現での最短マッチ...
-
PS4コントローラーをPCでゲーム...
-
wordの何も書かれていない2ペー...
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
Chr(13)とChr(10)の違いは?
-
「彡」って文字はなんという文...
-
TeraPadで改行が
-
VBAでの Replace関数で、ワイル...
-
セル内の文字列が日本語か英語...
-
EBCDIC⇒SJIS変換の方法
-
C#で年月を比較する
-
MMDでavi出力が出来ない
-
4Kの外部モニターに出力すると...
-
MS SQLServer のSQLで文字列の...
-
パワーポイントで文字の上に線...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正規表現 秀丸エディタ 行頭か...
-
正規表現でAND検索はできる...
-
vbaの正規表現で、マッチした一...
-
メールアドレスの正規表現について
-
文章中全ての半角カッコ ( の...
-
正規表現です。括弧内にある複...
-
Perl 数値にスラッシュを入れる...
-
[正規表現] 数字範囲をヒット...
-
正規表現でシングルクォーテー...
-
[VBS] テキストファイルから任...
-
C言語にパターンマッチってない...
-
MFCで正規表現
-
Mで始まりuで終わる文字列
-
C言語のコメントを「正規表現」...
-
正規表現でカウントアップ(?)す...
-
第二水準漢字が含まれるか?
-
特定タグ以外を変換したい
-
正規表現で囲まれた部分の文字列
-
grepの正規表現での最短マッチ...
-
1行~複数行をまとめる正規表現
おすすめ情報