How does one match character OR nothing using regular expression
Have you tried to match 0 or 1 characters between your numbers?
\d{3}[^0-9a-zA-Z]{0,1}\d{2}[^0-9a-zA-Z]{0,1}\d{4}
regex to match any character or none?
Use .*?
instead of .+?
.
+
means "1 or more"
*
means "0 or more"
Regex101 Demo
If you want a more efficient regex, use a negated character class [^"]
instead of a lazy quantifier ?
. You should also use the raw string flag r
and \d
for digits.
r'"[^"]*" \d{3}'
Regex match any single character (one character only)
Match any single character
- Use the dot
.
character as a wildcard to match any single character.
Example regex: a.c
abc // match
a c // match
azc // match
ac // no match
abbc // no match
Match any specific character in a set
- Use square brackets
[]
to match any characters in a set. - Use
\w
to match any single alphanumeric character:0-9
,a-z
,A-Z
, and_
(underscore). - Use
\d
to match any single digit. - Use
\s
to match any single whitespace character.
Example 1 regex: a[bcd]c
abc // match
acc // match
adc // match
ac // no match
abbc // no match
Example 2 regex: a[0-7]c
a0c // match
a3c // match
a7c // match
a8c // no match
ac // no match
a55c // no match
Match any character except ...
Use the hat in square brackets [^]
to match any single character except for any of the characters that come after the hat ^
.
Example regex: a[^abc]c
aac // no match
abc // no match
acc // no match
a c // match
azc // match
ac // no match
azzc // no match
(Don't confuse the ^
here in [^]
with its other usage as the start of line character: ^
= line start, $
= line end.)
Match any character optionally
Use the optional character ?
after any character to specify zero or one occurrence of that character. Thus, you would use .?
to match any single character optionally.
Example regex: a.?c
abc // match
a c // match
azc // match
ac // match
abbc // no match
See also
- A quick tutorial to teach you the basics of regex
- A practice sandbox to try things out
regular expression no characters
Use the following regular expression:
^[A-Za-z]*, $
Explanation:
^
matches the start of the string.[A-Za-z]*
matches 0 or more letters (case-insensitive) -- replace*
with+
to require 1 or more letters.,
matches a comma followed by a space.$
matches the end of the string, so if there's anything after the comma and space then the match will fail.
As has been mentioned, you should specify which language you're using when you ask a Regex question, since there are many different varieties that have their own idiosyncrasies.
How can I match anything up until this sequence of characters in a regular expression?
You didn't specify which flavor of regex you're using, but this will
work in any of the most popular ones that can be considered "complete".
/.+?(?=abc)/
How it works
The .+?
part is the un-greedy version of .+
(one or more of
anything). When we use .+
, the engine will basically match everything.
Then, if there is something else in the regex it will go back in steps
trying to match the following part. This is the greedy behavior,
meaning as much as possible to satisfy.
When using .+?
, instead of matching all at once and going back for
other conditions (if any), the engine will match the next characters by
step until the subsequent part of the regex is matched (again if any).
This is the un-greedy, meaning match the fewest possible to
satisfy.
/.+X/ ~ "abcXabcXabcX" /.+/ ~ "abcXabcXabcX"
^^^^^^^^^^^^ ^^^^^^^^^^^^
/.+?X/ ~ "abcXabcXabcX" /.+?/ ~ "abcXabcXabcX"
^^^^ ^
Following that we have (?=
{contents}
)
, a zero width
assertion, a look around. This grouped construction matches its
contents, but does not count as characters matched (zero width). It
only returns if it is a match or not (assertion).
Thus, in other terms the regex /.+?(?=abc)/
means:
Match any characters as few as possible until a "abc" is found,
without counting the "abc".
Regular Expression that matches a word, or nothing
(?:...)
is to regex patterns as (...)
is to arithmetic: It simply overrides precedence.
ab|cd # Matches ab or cd
a(?:b|c)d # Matches abd or acd
A ?
quantifier is what makes matching optional.
a? # Matches a or an empty string
abc?d # Matches abcd or abd
a(?:bc)?d # Matches abcd or ad
You want
(?:matic)?
Without the needless leading and trailing .*
, we get the following:
/[aA]uto(?:matic)?[ ]*[rR]eply/
As @adamdc78 points out, that matches AutoReply
. This can be avoided as using the following:
/[aA]uto(?:matic[ ]*|[ ]+)[rR]eply/
or
/[aA]uto(?:matic|[ ])[ ]*[rR]eply/
Which regular expression operator means 'Don't' match this character?
You can use negated character classes to exclude certain characters: for example [^abcde]
will match anything but a,b,c,d,e characters.
Instead of specifying all the characters literally, you can use shorthands inside character classes: [\w]
(lowercase) will match any "word character" (letter, numbers and underscore), [\W]
(uppercase) will match anything but word characters; similarly, [\d]
will match the 0-9 digits while [\D]
matches anything but the 0-9 digits, and so on.
If you use PHP you can take a look at the regex character classes documentation.
How to match any character in regular expression?
Yes, you can. That should work.
.
= any char except newline\.
= the actual dot character.?
=.{0,1}
= match any char except newline zero or one times.*
=.{0,}
= match any char except newline zero or more times.+
=.{1,}
= match any char except newline one or more times
Regex: match everything but a specific pattern
You could use a negative lookahead from the start, e.g., ^(?!foo).*$
shouldn't match anything starting with foo
.
Related Topics
Best Way to Remove File Extension
Why Does Psych Yaml Interpreter Add Line Breaks Around 80 Characters
Breaking a Large Rails App into Smaller Apps
Coping with "String Contains Null Byte" Sent from Users
Ruby on Rails:How to Implement Cancel Button in Form_Tag
What Purpose Can Anonymous Modules Serve
Generating Sequential Numbers in Multi-User Saas Application
How to Create a Dynamic Regular Expression in Ruby
Zip Up All Paperclip Attachments Stored on S3
Rails Routing: Giving Default Values for Path Helpers
How to Parse a HTML Table with Nokogiri
How to Run Multiple Lines of Ruby in HTML.Erb File
Port in Use When Not Using a Port
Preventing Delayed_Job Background Jobs from Consuming Too Much CPU on a Single Server
Ip Range to Cidr in Ruby/Rails
Changing Type of Activerecord Class in Rails with Single Table Inheritance