* 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.
Front page
List of pages
Search
Recent changes
リンク
Help
New
リンク
手動リンク
自動相互リンク
駄でべWiki:FrontPage
Help
整形ルール
プラグインマニュアル
浮子屋商店もよろしく。
create a new page, using
正規表現講座/おまけ1
as a template.
Start:
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
End:
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
Page: