- PR -

ディレクトリパスの正規表現

投稿者投稿内容
明智重蔵
大ベテラン
会議室デビュー日: 2005/09/05
投稿数: 127
投稿日時: 2008-03-27 20:39
引用:

ちょめさんの書き込み (2008-03-27 10:43) より:
半角英数字・記号のみを許すという正規表現は[a-zA-Z!-~]で
足りるのですが、そこから *, ?, <, >, | を除くというのを
1つの正規表現で実装したいと思っています。



(?![*?<>|])[a-zA-Z!-~]
これでいいはずです。

3-29 文字クラスの集合演算を模倣その3
http://oraclesqlpuzzle.hp.infoseek.co.jp/regex/regex-3-29.html


[ メッセージ編集済み 編集者: 明智重蔵 編集日時 2008-03-27 20:39 ]
ちょめ
会議室デビュー日: 2008/03/26
投稿数: 5
投稿日時: 2008-03-27 21:02
明智重蔵さん
ありがとうございます。

>(?![*?<>|])[a-zA-Z!-~]
で全角をはじくことが出来ました!

また参考にさせてもらったサイトの方法でもはじくことが出来ました。

[a-zA-Z!-~&&[^*?<>|]]

正規表現でも論理演算子が使えるんですね!
知らなかったです。おかげで助かりました。
ありがとうございました〜!!
Azulean
大ベテラン
会議室デビュー日: 2008/01/04
投稿数: 123
お住まい・勤務地: 大阪府
投稿日時: 2008-03-27 22:31
突っ込みだけしておきます。

引用:

indigo-xさんの書き込み (2008-03-27 12:15) より:
^([a-zA-Z0-9]|[^<>|])*$ 


これって、[a-zA-Z0-9]の部分は効力を発揮しませんよね…。
いずれも[^<>|]にマッチするから意味を成さないはず。

#速度的な面については考えません。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2008-03-28 19:42
引用:

・半角英数字・記号のみを許す。
 ※記号については *, ?, <, >, | の記号以外



やっぱり明確でないですね。
記号は「いわゆる半角」だけ許すのですか?
それともASCIIの範囲内の記号ですか?
それとも、「表現できる全ての記号」ですか?
その場合、「記号」の定義が問題になりますよ。
「α」とか、日本語では記号として扱う場合もありますし。

ASCIIの範囲内の英数字+ASCIIの範囲内の記号で、*, ?, <, >, | 以外、
というのならそのまんま普通に列挙すれば言いだけだと思いますが。

[!"#\$%&'\(\)\+,\-\./0-9:;=@A-Z\[\]\^_`a-z\{}~]

明智重蔵さんの、

> (?![*?<>|])[a-zA-Z!-~]

これでやるなら
(?![*?<>|])[!-~]
のほうがいいと思います。
indigo-x
大ベテラン
会議室デビュー日: 2008/02/21
投稿数: 207
お住まい・勤務地: 太陽の塔近く
投稿日時: 2008-03-28 20:05
引用:

Azuleanさんの書き込み (2008-03-27 22:31) より:
これって、[a-zA-Z0-9]の部分は効力を発揮しませんよね…。
いずれも[^<>|]にマッチするから意味を成さないはず。



そうですね。

(全体的な意味がわからなかったので集合を結合する部分のみを強調するあまりに
ミスしてますね。)

あと、単純に[a-zA-Z0-9記号]を書けばよいのでは

使える記号は10個もないはずなので減算等を使用する必要もないかと

[ メッセージ編集済み 編集者: indigo-x 編集日時 2008-03-28 20:06 ]

スキルアップ/キャリアアップ(JOB@IT)