Regular Expressions (Regexp)
Theory: Position within a string
In this lesson, we will learn about special characters that can clarify the character's positions in strings and substrings.
Let us look at the following example:
/java/
java
Here, the word java matches the string java. It is a simple condition.
It is important to remember that regular expressions do not look for matches in strings but in substrings. If you search in a string containing characters besides the ones you look for, the check may show that the strings match, even though you did not want it:
/java/
asdfjava asdf
There are special characters to control character search in a string.
A character that represents the beginning of a line
If you put ^ in the search line before the characters you look for, only the characters at the beginning of strings will match:
/^java/
java ruby clojurescript javascript
If we remove ^, we will have two matches, including one in the last substring:
/java/
java ruby clojurescript javascript
A character representing the end of a string
This character is $. Here is an example without this character. It has two matches:
/script/
java ruby clojurescript javascript
If we use $, we will have only one match at the end of the string:
/script$/
java ruby clojurescript javascript
Searching for characters relative to their word boundaries
Suppose we only need to find instances of a at the end of a word. To do this, we type a\b in the string pattern:
/a\b/
java ruby clojurescript javascript
If we type \B, instead, we can invert the search and find all instances of a not at the end of a word:
/a\B/
java ruby clojurescript javascript
If you put \b in front of the character we search for, we will find the characters at the beginning of the word:
/\bj/
java ruby clojurescript javascript
Here we use inverting again:
/\Bj/
java ruby clojurescriptj javascript
For clarity, if we compare it with the previous example, we added another j after the clojurescript in our string.
Now we find only instances of j that are neither at the beginning nor the end of a word:
/\Bj\B/
java ruby clojurescriptj javascript

