痔になりやすい生活習慣とは?

正規表現を勉強しています。行頭がxyzという文字列以外をマッチさせたいと思っています。行頭にマッチさせるには"^xyz"と理解できます。[^xyz]とやるとx,y,z以外の文字列にマッチするのもわかります。ただ、これだと

123 xyz

の文字にもマッチしていまいます。行頭がxyzで続く文字列以外にマッチさせる正規表現はどうかけばよろしいでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

パターンを使うんでしょうね。

 → ^(?!xyz)
Excelマクロでの実験プログラム
Dim A, P$
Set A = CreateObject("VBScript.RegExp")
A.Global = True
A.IgnoreCase = True
P = "^(?!xyz)"
A.Pattern = P
Debug.Print A.Test("xyz123") '★(1)
Debug.Print A.Test("123xyz") '★(2)
(1)先頭が「"xyz"以外」という条件に反するのでFalse
(2)先頭が「"xyz"以外」という条件に合うのでTrue

http://msdn.microsoft.com/ja-jp/library/cc392020 …
    • good
    • 2

^[^x]?[^y]?[^z]?


じゃないですかね?この式だと、

x
xy

という行にもマッチします(xyzじゃない行ですから、マッチすべき)。それがいやなら、次の式になります。実はクエスチョンマークを消しただけです。

^[^x][^y][^z]

^[^xyz]だと、行頭がx,y,zのいずれでもないという意味になりますから、xyzと言う行だけでなく、yまたはzで始まる行もマッチしません。
    • good
    • 0

「行頭がxyzである」は、「行頭から、1文字目がx かつ 2文字目がy かつ 3文字目がz である」ということで、正規表現は ^xyz になります。



一方、「行頭がxyzでない」は、「行頭から、1文字目がx以外 または 2文字目がy以外 または 3文字目がz以外」ということですので、
これを正規表現にすると、^([^x]|.[^y]|..[^z]) となります。

…とまあ、結構ややこしいことになるので、
  「行頭がxyzである」にマッチしなかったら、
という条件で処理した方が簡単でしょう。
    • good
    • 1

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q正規表現でAND検索はできるのでしょうか

正規表現でAND検索はできるのでしょうか?

現在ASPでデータベースのデータを検索しようとしているのですが,検索エンジンみたいに複数の語をスペースで区切って入力して,データを絞り込んで表示したいのです。

OR検索みたいにそれぞれの語を"|"でつなぐというようなやり方があるのでしょうか?
それとも一つ一つの語で検索を繰り返すという方法しかないのでしょうか?

ご存知の方,ご教授ください。

Aベストアンサー

&&でつながれたらいかがですか?

(?=.*stat)(?=.*ate)はAND検索という意味ではありません。
statedのようにstatとateを重複して含む単語にマッチするという意味です。

普通はこんな回りくどいことはせず、
/stat/ && /ate/
で済ませると思います。
(もしくは単純にループでまわしていくとか)


foo.*bar|bar.*foo
も、2語程度までが限界ですよね。
10語分繋げることを考えると気が遠くなります。
(記述も処理時間も)

言語によってはさらに処理を短縮できるような
特有な構文がありますから、調べてみればよろしいかと思います。

QExcelで正規表現やワイルドカードなどを使って置換したいのですが…

Excelの中で置換をしたいのですが、
例えば以下のように( )かっこでくくられた不規則な数字を検索し、その前後に記号を付加するといった具合です。
Wordだと置換で正規表現が使えますが、Excelではやはりマクロを作らないとだめなのでしょうか?

 置換前
  あいう(123)かきく(あああ)
  さしす(ははは)たち(589)つ
   ・      ・
   ・      ・

 置換後
  あいう★(123)★かきく(あああ)
  さしす(ははは)たち★(589)★つ
   ・      ・
   ・      ・

Aベストアンサー

以下の正規表現アドインを使用すると可能です。
http://srcedit.pekori.jp/tool/excelre.html

置換前 ((\d+))
置換後 ★$1★

Q正規表現の否定先読みで、複数の否定文字列を指定する方法はありませんか?

正規表現の否定先読みで、複数の否定文字列を指定する方法はありませんか?

例えば、
/(a)(?!bbb)/
は、後ろにbbbが続かないaを意味すると思いますが、
後ろにbbb、ccc、dddのいずれもが続かないaを表現する方法を探しています。

Aベストアンサー

単純に
/a(?!bbb|ccc|ddd)/
じゃダメなんだっけ?

Qbatである文字列内に特定の文字列が含まれているか確認したい

batファイルの中である変数「abc」の中に「test」という文字が含まれていたら○○を行なうという分岐を作成したいのですが、どのように行なえばよいのでしょうか?

そのまま、ずばりのお答えお待ちしております。

よろしくお願い致します。

Aベストアンサー

大文字小文字を区別しなくていいなら、

if not "%abc:test=%" == "%abc%" echo 含まれていた

区別するなら、

echo %abc% | find "test" >NUL
if not ERRORLEVEL 1 echo 含まれていた

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

Qsedの置換文字に変数を使用したいのですが・・・

あるファイルの特定の文字を変換し、上書きをする処理を行いたいのですが、sedの置換文字に変数が渡せなくて困っています。

例:
X="a"
Y="b"
echo test.txt | sed 's/${X}/${Y/g}' >test.txt

sedでは置換文字に${X}といった変数を使用することはできないのでしょうか?

Aベストアンサー

' ・・・' で囲まれた中の$はそのままドルマークです。変数展開をするなら、'・・・'で囲んではいけません。

何も囲まないか、"・・・"で囲むかです。

Q正規表現で何文字目から何文字目までのヒット

正規表現で何文字目から何文字目までのヒット

正規表現を使い、何文字目から何文字目までをヒットさせたいです。

例えば、下記の英字があります。

abcdefg

6文字目~7文字目をヒットさせたいです。この場合は、「fg」にヒットさせたいです。
先頭から何文字目までヒットというのならわかるのですが、特定の文字数から文字数まで
ヒットさせたいという場合、どのような正規表現を組めばいいのでしょうか?

Aベストアンサー

抜き出すんじゃなくてマッチさせたいとなると戻り読みですかね・・・肯定戻りも否定戻りも個人的に苦手なんですが

# サクラエディタ(ver 2.0.2.0) + bregonig.dll (ver 2.03)
(?<=^.{5}).{2}

Qダブルクォーテーションを含む正規表現について。

正規表現によるマッチング(?)を勉強しています。

例えば「blog」という文字列で、マッチングを試みる場合は、
String str = "blog";
で、strに格納すると思うのですが、例えば「link rel=""」という文字列でマッチングを試みる場合はどうすればいいのでしょうか?
「""」の部分をそのまま文字列のダブルクォーテーションの中に入れると、エラーになってしまうので、何か別のやり方が必要だと思うのですが、わかりません…。

Aベストアンサー

もとい

”abc"abc”は”abc\"abc”と記述します

QOracle(オラクル)で、日付時刻型の検索方法について

質問させていただきます。
データベースはオラクルを使っていて、
SQL文で、抽出するときにエラーが出て困っています。

日付時刻型が「2005/05/26 19:13:00」という感じで入ってます。
2005/05/26 を抽出したいのですが、
BETWEEN '2005/05/26 00:00:00' AND '2005/05/26 23:59:59'

だと、エラーでできません。
どなた様か、ご教授よろしくお願いしますm(_ _)m

Aベストアンサー

日付検索を行う場合は、以下のように書式を含める必要があります。

col BETWEEN TO_DATE('2005/05/26 00:00:00','YYYY/MM/DD HH24:MI:SS') AND TO_DATE('2005/05/26 23:59:59','YYYY/MM/DD HH24:MI:SS')

ただ、厳密には

col >= TO_DATE('2005/05/26', 'YYYY/MM/DD')
AND
col < TO_DATE('2005/05/27', 'YYYY/MM/DD')

と書くべきでしょうね。

Q正規表現で最初にマッチしたものだけを選択する方法

秀丸の正規表現を用いて「その行で最初にマッチした単語」だけを取得したいのですが可能でしょうか

一例をあげますと、
検索文字列:ももりんごみかんももりんごみかん
とあるとき、左の「りんご」だけを「なし」に置換したいという希望です。

Aベストアンサー

> ついでといっては恐縮ですが、(?\2)という部分がどのような意味なのか教えて
これより前の部分で、() で囲まれた部分の 2 つ目のみにヒットさせる
という意味になります。詳細は、HmJre.dll のヘルプをご覧下さい。
秀丸エディタのヘルプの正規表現の項目からも辿れます。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング