-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlesson4.html
121 lines (120 loc) · 5.67 KB
/
lesson4.html
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
<html>
<head>
<meta charset="utf-8">
<meta name="application-name" content="KITAB regex tutorial">
<meta name="created" content="2021-05-05">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>KITAB regex tutorial - lesson 4: Word and digit characters</title>
<link rel="stylesheet" type="text/css" href="css/styles.css" />
<!--<script src="https://unpkg.com/xregexp/xregexp-all.js"></script>--> <!--regular expressions library with support for unicode code blocks-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/3.2.0/xregexp-all.min.js"></script>
</head>
<body>
<h1>Regex tutorial for humanists</h1>
<div id="tutorial">
<h2>4. Word and digit characters</h2>
<p>
We have seen that the <strong>backslash</strong> escapes the special powers of metacharacters
and turns them into literal characters. The opposite happens when the
backslash is put in front of some (but not all) literal characters: that
character becomes a <strong>metacharacter</strong> with a special meaning.
</p>
<p>
For example, while the regex <span class="regex">d</span> will match the
lower-case letter "d", <span class="regex">\d</span> stands for "any single
<strong>d</strong>igit character".
<strong>Digit characters</strong> are defined
in a variety of ways in different implementations of regular expressions;
in most cases, <span class="regex">\d</span> will match only the Latin-script
(<a href="https://en.wikipedia.org/wiki/ASCII" target="_blank">ASCII</a>)
digits 0 to 9.
</p>
<p>
Similarly, the regular expression <span class="regex">\w</span> stands for
"any single <strong>w</strong>ord character". Word characters are defined
in a variety of ways in different implementations of regular expressions;
in most cases, <span class="regex">\w</span> will match only any upper-
and lower-case letter a to z and any digit from 0 to 9, in addition to
the underscore ("_") character - that is, the characters that were
allowed in <a href="https://stackoverflow.com/a/49534529" target="_blank">variable names</a>
in the Perl computer language, which contained one of the
earliest and fullest implementations of regular expressions.
</p>
<p>
The expression <span class="regex">\W</span> (that's a capital W)
stands for the opposite:
"any single character that is NOT a <strong>w</strong>ord character".
Similarly, <span class="regex">\D</span> stands for
"any single character that is NOT a <strong>d</strong>igit".
</p>
<p>
In the search box below the sample strings, write a pattern that matches
any string that consists of two letters or numbers, followed by a digit and
a character that is not a letter or number.
</p>
</div>
<div id="exercise" type="full_match"> <!-- possible types: full_match, partial_match -->
<div id="exercise_title">
Exercise 4: match any string that consists of two letters or numbers, followed by a digit and
a character that is not a letter or number.
</div>
<div id="samples">
<table>
<thead>
<tr>
<th>Task</th>
<th>Text</th>
<th> </th>
</tr>
<!-- line below the table heading: -->
<tr><td style="border-top:1px solid black;" colspan="3"></td></tr>
</thead>
<tbody>
<tr>
<td class="instruction">Match this string entirely</td>
<td class="sample" match="Ab2!">Ab2!</td>
<td class="correctOrNot"></td>
</tr>
<tr>
<td class="instruction">Don't match this string</td>
<td class="sample" match="Ab22">Ab22</td>
<td class="correctOrNot"></td>
</tr>
<tr>
<td class="instruction">Match this string entirely</td>
<td class="sample" match="222.">222.</td>
<td class="correctOrNot"></td>
</tr>
<tr>
<td class="instruction">Don't match this string</td>
<td class="sample" match="22a.">22a.</td>
<td class="correctOrNot"></td>
</tr>
</tbody>
</table>
</div>
<div id="input">
<input id="solution_input" autocomplete="off" autocapitalize="off" autocorrect="off" spellcheck="false" placeholder="Type your regex pattern" solution="\w\w\d\W"></input>
<input id="next_button" type="button" onclick="location.href='lesson5.html';" value="Next lesson" disabled title="Get the solution first!"/>
</div>
<div id="hintOrSolution">
<input id="hint_button" type="button" onclick="showHint()" value="Hint" title="Get a hint"/>
<input id="solution_button" type="button" onclick="showSolution()" value="Solution" title="Take the hint before you get the solution!" disabled/>
</div>
<div id="hint" style="display:none;">
Each of the sample strings consists of 4 characters. Use a combination of the
<span class="regex">\d</span>, <span class="regex">\w</span> and <span class="regex">\W</span>
patterns. Remember that <span class="regex">\w</span> includes both digits and letters.
</div>
<div id="solution" style="display:none;">
<p>
The first two characters can be any word character (<span class="regex">\w</span>),
the third must be a digit (<span class="regex">\d</span>),
and the last should not be a digit nor a letter <span class="regex">\W</span>.
</p>
</div>
</div>
<input id="back_button" type="button" onclick="location.href='lesson3.html';" value="Back"/>
<script type="text/javascript" src="js/script.js"></script>
</body>
</html>