* U K I Y A H O N P O *
Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura,
che la diritta via era smarrita.
ホーム
一覧
検索
最終更新
リンク
ヘルプ
新規
リンク
手動リンク
自動相互リンク
駄でべWiki:FrontPage
ヘルプ
整形ルール
プラグインマニュアル
浮子屋商店もよろしく。
正規表現講座/おまけ1
をテンプレートにして作成
開始行:
TITLE:間違いだらけの正規表現講座 おまけ 1
#contentsx
* さくらスクリプトの正規表現 [#zaaa4f74]
さくらスクリプトをなるべく正確に正規表現にするのにチャレ...
参考元は http://crow.aqrs.jp/reference/all/ です。
** まずはチャレンジ [#bd72415a]
とりあえず書いてみたもの。
#pre{{
\\(\\|q\[.*?\]\[.*?\]|[!&8cfijmpqsn]\[.*?\]|[-*+014567bce...
}}
分解すると
#pre{{
\\ #\ 記号そのもの
(
\\| #\\(エスケープされた\)
q\[.*?\]\[.*?\]| #\q[id][選択肢表示名]
[!&8cfijmpqsn]\[.*?\]| #\○[~]系
[-*+014567bcehntuvxz]| #\○系
_[ablmsuvw]\[.*?\]| #\_○[~] 系
__(t|[qw]\[.*?\])| #\__○ 系
_[!?+nqsV]| #\_○系
[sipw][0-9] #\w9と\i9 系
)
}}
これだと、本当は \\ はさくらスクリプトのタグ''ではない''
(表示文字として残さなければならない)ので反則なんですけ...
** 前読みを使ったパターン [#na932591]
\\を残すとして、前読みを使うと冒頭がこうなります。
#pre{{
((?<=\\\\)|(?<!\\))\\(q\[.*?\]~
(
(?<=\\\\)| #肯定前読み、\\\w9 のようなパターンに対応
(?<!\\) #否定前読み、\\w9 のようなパターンに対応
)
\\
(q\[.*?\]~
}}
ただしこれだと、「\\\\w9」みたいなパターンには対応できな...
さらにもう1個、冒頭の否定肯定を繰り返せば、「\\\\w9」に...
それを延々と繰り返すわけにも行かない。
前読みで「偶数個マッチ」「奇数個マッチ」等ができる処理系...
どこかで妥協するしかないのでしょうね。
現実的な解としては、
- \\ をもとの文章中に出てこない適当な文字、たとえばASCII...
- 正規表現を適用する
- さっき変えた 0x01 を \\ に書き戻す
という手順を踏むことによって解決できるのですが。
引っ掛けられなかったり、あるいは誤爆してしまう場合があっ...
* ご指摘などはこちらへ [#oa19ce6c]
#comment
終了行:
TITLE:間違いだらけの正規表現講座 おまけ 1
#contentsx
* さくらスクリプトの正規表現 [#zaaa4f74]
さくらスクリプトをなるべく正確に正規表現にするのにチャレ...
参考元は http://crow.aqrs.jp/reference/all/ です。
** まずはチャレンジ [#bd72415a]
とりあえず書いてみたもの。
#pre{{
\\(\\|q\[.*?\]\[.*?\]|[!&8cfijmpqsn]\[.*?\]|[-*+014567bce...
}}
分解すると
#pre{{
\\ #\ 記号そのもの
(
\\| #\\(エスケープされた\)
q\[.*?\]\[.*?\]| #\q[id][選択肢表示名]
[!&8cfijmpqsn]\[.*?\]| #\○[~]系
[-*+014567bcehntuvxz]| #\○系
_[ablmsuvw]\[.*?\]| #\_○[~] 系
__(t|[qw]\[.*?\])| #\__○ 系
_[!?+nqsV]| #\_○系
[sipw][0-9] #\w9と\i9 系
)
}}
これだと、本当は \\ はさくらスクリプトのタグ''ではない''
(表示文字として残さなければならない)ので反則なんですけ...
** 前読みを使ったパターン [#na932591]
\\を残すとして、前読みを使うと冒頭がこうなります。
#pre{{
((?<=\\\\)|(?<!\\))\\(q\[.*?\]~
(
(?<=\\\\)| #肯定前読み、\\\w9 のようなパターンに対応
(?<!\\) #否定前読み、\\w9 のようなパターンに対応
)
\\
(q\[.*?\]~
}}
ただしこれだと、「\\\\w9」みたいなパターンには対応できな...
さらにもう1個、冒頭の否定肯定を繰り返せば、「\\\\w9」に...
それを延々と繰り返すわけにも行かない。
前読みで「偶数個マッチ」「奇数個マッチ」等ができる処理系...
どこかで妥協するしかないのでしょうね。
現実的な解としては、
- \\ をもとの文章中に出てこない適当な文字、たとえばASCII...
- 正規表現を適用する
- さっき変えた 0x01 を \\ に書き戻す
という手順を踏むことによって解決できるのですが。
引っ掛けられなかったり、あるいは誤爆してしまう場合があっ...
* ご指摘などはこちらへ [#oa19ce6c]
#comment
ページ名: