Skip to content

Commit ef99de7

Browse files
committed
Add source.regexp.python rules
1 parent 8f82b03 commit ef99de7

2 files changed

Lines changed: 302 additions & 0 deletions

File tree

extensions/python/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
"language": "python",
1616
"scopeName": "source.python",
1717
"path": "./syntaxes/Python.tmLanguage"
18+
},{
19+
"scopeName": "source.regexp.python",
20+
"path": "./syntaxes/Regular Expressions (Python).tmLanguage"
1821
}]
1922
}
2023
}
Lines changed: 299 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,299 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>comment</key>
6+
<string>Matches Python's regular expression syntax.</string>
7+
<key>fileTypes</key>
8+
<array>
9+
<string>re</string>
10+
</array>
11+
<key>foldingStartMarker</key>
12+
<string>(/\*|\{|\()</string>
13+
<key>foldingStopMarker</key>
14+
<string>(\*/|\}|\))</string>
15+
<key>name</key>
16+
<string>Regular Expressions (Python)</string>
17+
<key>patterns</key>
18+
<array>
19+
<dict>
20+
<key>match</key>
21+
<string>\\[bBAZzG]|\^|\$</string>
22+
<key>name</key>
23+
<string>keyword.control.anchor.regexp</string>
24+
</dict>
25+
<dict>
26+
<key>match</key>
27+
<string>\\[1-9][0-9]?</string>
28+
<key>name</key>
29+
<string>keyword.other.back-reference.regexp</string>
30+
</dict>
31+
<dict>
32+
<key>match</key>
33+
<string>[?+*][?+]?|\{(\d+,\d+|\d+,|,\d+|\d+)\}\??</string>
34+
<key>name</key>
35+
<string>keyword.operator.quantifier.regexp</string>
36+
</dict>
37+
<dict>
38+
<key>match</key>
39+
<string>\|</string>
40+
<key>name</key>
41+
<string>keyword.operator.or.regexp</string>
42+
</dict>
43+
<dict>
44+
<key>begin</key>
45+
<string>\(\?\#</string>
46+
<key>end</key>
47+
<string>\)</string>
48+
<key>name</key>
49+
<string>comment.block.regexp</string>
50+
</dict>
51+
<dict>
52+
<key>comment</key>
53+
<string>We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.</string>
54+
<key>match</key>
55+
<string>(?&lt;=^|\s)#\s[[a-zA-Z0-9,. \t?!-:][^\x{00}-\x{7F}]]*$</string>
56+
<key>name</key>
57+
<string>comment.line.number-sign.regexp</string>
58+
</dict>
59+
<dict>
60+
<key>match</key>
61+
<string>\(\?[iLmsux]+\)</string>
62+
<key>name</key>
63+
<string>keyword.other.option-toggle.regexp</string>
64+
</dict>
65+
<dict>
66+
<key>match</key>
67+
<string>(\()(\?P=([a-zA-Z_][a-zA-Z_0-9]*\w*))(\))</string>
68+
<key>name</key>
69+
<string>keyword.other.back-reference.named.regexp</string>
70+
</dict>
71+
<dict>
72+
<key>begin</key>
73+
<string>(\()((\?=)|(\?!)|(\?&lt;=)|(\?&lt;!))</string>
74+
<key>beginCaptures</key>
75+
<dict>
76+
<key>1</key>
77+
<dict>
78+
<key>name</key>
79+
<string>punctuation.definition.group.regexp</string>
80+
</dict>
81+
<key>2</key>
82+
<dict>
83+
<key>name</key>
84+
<string>punctuation.definition.group.assertion.regexp</string>
85+
</dict>
86+
<key>3</key>
87+
<dict>
88+
<key>name</key>
89+
<string>meta.assertion.look-ahead.regexp</string>
90+
</dict>
91+
<key>4</key>
92+
<dict>
93+
<key>name</key>
94+
<string>meta.assertion.negative-look-ahead.regexp</string>
95+
</dict>
96+
<key>5</key>
97+
<dict>
98+
<key>name</key>
99+
<string>meta.assertion.look-behind.regexp</string>
100+
</dict>
101+
<key>6</key>
102+
<dict>
103+
<key>name</key>
104+
<string>meta.assertion.negative-look-behind.regexp</string>
105+
</dict>
106+
</dict>
107+
<key>end</key>
108+
<string>(\))</string>
109+
<key>endCaptures</key>
110+
<dict>
111+
<key>1</key>
112+
<dict>
113+
<key>name</key>
114+
<string>punctuation.definition.group.regexp</string>
115+
</dict>
116+
</dict>
117+
<key>name</key>
118+
<string>meta.group.assertion.regexp</string>
119+
<key>patterns</key>
120+
<array>
121+
<dict>
122+
<key>include</key>
123+
<string>$self</string>
124+
</dict>
125+
</array>
126+
</dict>
127+
<dict>
128+
<key>begin</key>
129+
<string>(\()(\?\(([1-9][0-9]?|[a-zA-Z_][a-zA-Z_0-9]*)\))</string>
130+
<key>beginCaptures</key>
131+
<dict>
132+
<key>1</key>
133+
<dict>
134+
<key>name</key>
135+
<string>punctuation.definition.group.regexp</string>
136+
</dict>
137+
<key>2</key>
138+
<dict>
139+
<key>name</key>
140+
<string>punctuation.definition.group.assertion.conditional.regexp</string>
141+
</dict>
142+
<key>3</key>
143+
<dict>
144+
<key>name</key>
145+
<string>entity.name.section.back-reference.regexp</string>
146+
</dict>
147+
</dict>
148+
<key>comment</key>
149+
<string>we can make this more sophisticated to match the | character that separates yes-pattern from no-pattern, but it's not really necessary.</string>
150+
<key>end</key>
151+
<string>(\))</string>
152+
<key>name</key>
153+
<string>meta.group.assertion.conditional.regexp</string>
154+
<key>patterns</key>
155+
<array>
156+
<dict>
157+
<key>include</key>
158+
<string>$self</string>
159+
</dict>
160+
</array>
161+
</dict>
162+
<dict>
163+
<key>begin</key>
164+
<string>(\()((\?P&lt;)([a-z]\w*)(&gt;)|(\?:))?</string>
165+
<key>beginCaptures</key>
166+
<dict>
167+
<key>1</key>
168+
<dict>
169+
<key>name</key>
170+
<string>punctuation.definition.group.regexp</string>
171+
</dict>
172+
<key>3</key>
173+
<dict>
174+
<key>name</key>
175+
<string>punctuation.definition.group.capture.regexp</string>
176+
</dict>
177+
<key>4</key>
178+
<dict>
179+
<key>name</key>
180+
<string>entity.name.section.group.regexp</string>
181+
</dict>
182+
<key>5</key>
183+
<dict>
184+
<key>name</key>
185+
<string>punctuation.definition.group.capture.regexp</string>
186+
</dict>
187+
<key>6</key>
188+
<dict>
189+
<key>name</key>
190+
<string>punctuation.definition.group.no-capture.regexp</string>
191+
</dict>
192+
</dict>
193+
<key>end</key>
194+
<string>(\))</string>
195+
<key>endCaptures</key>
196+
<dict>
197+
<key>1</key>
198+
<dict>
199+
<key>name</key>
200+
<string>punctuation.definition.group.regexp</string>
201+
</dict>
202+
</dict>
203+
<key>name</key>
204+
<string>meta.group.regexp</string>
205+
<key>patterns</key>
206+
<array>
207+
<dict>
208+
<key>include</key>
209+
<string>$self</string>
210+
</dict>
211+
</array>
212+
</dict>
213+
<dict>
214+
<key>include</key>
215+
<string>#character-class</string>
216+
</dict>
217+
</array>
218+
<key>repository</key>
219+
<dict>
220+
<key>character-class</key>
221+
<dict>
222+
<key>patterns</key>
223+
<array>
224+
<dict>
225+
<key>match</key>
226+
<string>\\[wWsSdDhH]|\.</string>
227+
<key>name</key>
228+
<string>constant.character.character-class.regexp</string>
229+
</dict>
230+
<dict>
231+
<key>match</key>
232+
<string>\\.</string>
233+
<key>name</key>
234+
<string>constant.character.escape.backslash.regexp</string>
235+
</dict>
236+
<dict>
237+
<key>begin</key>
238+
<string>(\[)(\^)?</string>
239+
<key>beginCaptures</key>
240+
<dict>
241+
<key>1</key>
242+
<dict>
243+
<key>name</key>
244+
<string>punctuation.definition.character-class.regexp</string>
245+
</dict>
246+
<key>2</key>
247+
<dict>
248+
<key>name</key>
249+
<string>keyword.operator.negation.regexp</string>
250+
</dict>
251+
</dict>
252+
<key>end</key>
253+
<string>(\])</string>
254+
<key>endCaptures</key>
255+
<dict>
256+
<key>1</key>
257+
<dict>
258+
<key>name</key>
259+
<string>punctuation.definition.character-class.regexp</string>
260+
</dict>
261+
</dict>
262+
<key>name</key>
263+
<string>constant.other.character-class.set.regexp</string>
264+
<key>patterns</key>
265+
<array>
266+
<dict>
267+
<key>include</key>
268+
<string>#character-class</string>
269+
</dict>
270+
<dict>
271+
<key>captures</key>
272+
<dict>
273+
<key>2</key>
274+
<dict>
275+
<key>name</key>
276+
<string>constant.character.escape.backslash.regexp</string>
277+
</dict>
278+
<key>4</key>
279+
<dict>
280+
<key>name</key>
281+
<string>constant.character.escape.backslash.regexp</string>
282+
</dict>
283+
</dict>
284+
<key>match</key>
285+
<string>((\\.)|.)\-((\\.)|[^\]])</string>
286+
<key>name</key>
287+
<string>constant.other.character-class.range.regexp</string>
288+
</dict>
289+
</array>
290+
</dict>
291+
</array>
292+
</dict>
293+
</dict>
294+
<key>scopeName</key>
295+
<string>source.regexp.python</string>
296+
<key>uuid</key>
297+
<string>DD867ABF-1EC6-415D-B047-687F550A1D51</string>
298+
</dict>
299+
</plist>

0 commit comments

Comments
 (0)