-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathReplaceStr_Part11_res549.txt
215 lines (193 loc) · 5.65 KB
/
ReplaceStr_Part11_res549.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
######################################################################
<rx>(?:\G[\s ]*+(?:(?:[\,&と,、]|&)[\s ]*+)?+\K|(?<![!-~&&[^"()<>]]|>))(?:(?=[1-9]9\d(?!\d))(?<A9C>)(?&AB)\d|(?=[1-9][1-8]\d(?!\d))(?<A>[1-9])(?&B)\d|(?=[1-9]\d(?!\d))(?&B)\d)(?:(?!\-)|\-(?(<A9C>)(?&DEF9)|(?&DEF)))(?![\d\-\.\::系形型番本編連両号発着時分秒年月日代兆億万千円人歳回階倍余%‰㌧㌢㌔㍑$㎜㎡~cm]|(?:[km][mgl]|c[cm]|[mtvw]|kW)(?![[:alpha:]])|リットル|ミリ|センチ|メートル|ヤード|ポンド|mph|トン|ドル|グラム|平方|立方|坪|車体|キロ|メガ|ギガ|スレ|レス|パー|\s*+</a>)(?!(?!)tonco(?<AB>(?<AB1>19)|(?<AB2>29)|(?<AB3>39)|(?<AB4>49)|(?<AB5>59)|(?<AB6>69)|(?<AB7>79)|(?<AB8>89)|(?<AB9>99))(?<B>(?<B0>0)|(?<B1>1)|(?<B2>2)|(?<B3>3)|(?<B4>4)|(?<B5>5)|(?<B6>6)|(?<B7>7)|(?<B8>8)|(?<B9>9))(?<DEF9>(?(<AB1>)(19|20)|(?(<AB2>)(29|30)|(?(<AB3>)(39|40)|(?(<AB4>)(49|50)|(?(<AB5>)(59|60)|(?(<AB6>)(69|70)|(?(<AB7>)(79|80)|(?(<AB8>)(89|90)|(?(<AB9>)(99|100)|(?!))))))))))\d)(?<DEF>(?(<A>)\k<A>)(?(<B0>)[01]|(?(<B1>)[12]|(?(<B2>)[23]|(?(<B3>)[34]|(?(<B4>)[45]|(?(<B5>)[56]|(?(<B6>)[67]|(?(<B7>)[78]|(?(<B8>)[89]|(?(<B9>)(9|10)|(?!)))))))))))\d)) >>$& msg <0>/rail/1535373886/
######################################################################
# 2018/11/04
#
# [ 掲示板に書かれた数字をレスアンカー化する正規表現 ]
#
# 例えば書き込みに 123-124 という文字列を見つけると >>123-124 の形にします
# この場合、前半の数字をABC、後半の数字をDEFとして扱っています
#
# アンカー化は 123-124 の形だけでなく 345 のような数字単体の場合も行われます
# そのためアンカー化するべきでないものもアンカー化することがあります
# このような誤爆を避けるための部分をカスタマイズすることで誤爆を調整できます
#
# この正規表現はURLに /rail/1535373886/ を含むスレのみで動作します
# これを変えたい場合は <0>/rail/1535373886/ のところを調整してください
#
# 依頼元: ReplaceStr.txtを活用するスレ Part11 no.549
# http://jane2ch.net/test/read.cgi/community/1466648977/549-
#
#
# この正規表現は bregonig.dll Ver.4.12 以降を使うことを前提としています
# 動かない場合はバージョンが古くないか確認して下さい
#
#
### 素晴らしい正規表現ライブラリを公開されているお二人に感謝~ ###
#
# bregonig.dll、Onigmo : k-takata氏
# https://github.com/k-takata/
# http://k-takata.o.oo7.jp/
# https://twitter.com/k_takata
#
# oniguruma : K.Kosako氏
# https://github.com/kkos/oniguruma
######################################################################
(?:
## 前回マッチした位置から
\G
[\s ]*+
(?:
(?:
[\,&と,、]
|
&
)
[\s ]*+
)?+
\K
|
## 数字の前に↓があったらアンカーにしない
(?<!
## URL文字。\d \- \. \, \: > も一緒に弾かれる
[!-~&&[^"()<>]]
|
>
)
)
## ここから1つ目のレス番号
(?:
## 3ケタの数字 (十の位が9)
(?=[1-9]9\d(?!\d))
## 十の位が9というフラグを立てる
(?<A9C>)
## 百と十の位AB
(?&AB)
## 一の位C
\d
|
## 3ケタの数字 (十の位が9以外)
(?=[1-9][1-8]\d(?!\d))
## 百の位A
(?<A>[1-9])
## 十の位B
(?&B)
## 一の位C
\d
|
## 2ケタの数字
## 十の位B
(?=[1-9]\d(?!\d))
(?&B)
## 一の位C
\d
## ※ 1ケタの数字には対応していません
)
## ここから2つ目のレス番号
(?:
(?!\-)
|
\-
## ABCが3ケタで十の位が9の数字だったかどうかで分岐
(?(<A9C>)
(?&DEF9)
|
(?&DEF)
)
)
## レス番号の後ろに↓があったら弾く
(?!
[\d\-\.\::系形型番本編連両号発着時分秒年月日代兆億万千円人歳回階倍余%‰㌧㌢㌔㍑$㎜㎡~cm]
|
## km, cm, mm, m, t(トン), v(ボルト), w(ワット)
(?:[km][mgl]|c[cm]|[mtvw]|kW)
(?![[:alpha:]])
|
リットル|ミリ|センチ|メートル|ヤード|ポンド|mph|トン|ドル
|グラム|平方|立方|坪|車体|キロ|メガ|ギガ|スレ|レス|パー
|
\s*+</a>
)
################## 定義ここから #################
(?!(?!)tonco
## 百の位と十の位が [1-9]9 のときマッチ
(?<AB>
(?<AB1>19)
| (?<AB2>29)
| (?<AB3>39)
| (?<AB4>49)
| (?<AB5>59)
| (?<AB6>69)
| (?<AB7>79)
| (?<AB8>89)
| (?<AB9>99)
)
## 十の位
(?<B>
(?<B0>0)
|(?<B1>1)
|(?<B2>2)
|(?<B3>3)
|(?<B4>4)
|(?<B5>5)
|(?<B6>6)
|(?<B7>7)
|(?<B8>8)
|(?<B9>9)
)
## 2つ目のレス番号(A9Cフラグが立っているとき)
(?<DEF9>
(?(<AB1>)(19|20)|
(?(<AB2>)(29|30)|
(?(<AB3>)(39|40)|
(?(<AB4>)(49|50)|
(?(<AB5>)(59|60)|
(?(<AB6>)(69|70)|
(?(<AB7>)(79|80)|
(?(<AB8>)(89|90)|
(?(<AB9>)(99|100)
| (?!)
)
)
)
)
)
)
)
)
)
## 3ケタ目F
\d
)
## 2つ目のレス番号(A9Cフラグが無いとき)
(?<DEF>
## ABCが3ケタだったらAと同じ数字にマッチ、2ケタなら空文字にマッチ
(?(<A>)\k<A>)
(?(<B0>)[01]|
(?(<B1>)[12]|
(?(<B2>)[23]|
(?(<B3>)[34]|
(?(<B4>)[45]|
(?(<B5>)[56]|
(?(<B6>)[67]|
(?(<B7>)[78]|
(?(<B8>)[89]|
(?(<B9>)
(9|10)
| (?!)
)
)
)
)
)
)
)
)
)
)
## 3ケタ目F
\d
)
## tonco END
)
######################################################################