如果前导数字根本不匹配
Do not match at all if leading numbers
我创建了一个小的 RegEx 以在字符串中查找一些变量名:
([a-zA-Z][a-zA-Z0-9_]+)
在我的例子中,变量可以有整数和字母 + 下划线字符,但它不应该以数字开头。
问题是在这个字符串中:
"whateverTextBefore,246myVariableName25"
它将匹配myVariableName25,保留之前的246。我不想完全匹配这个。
我也试过这个模式:
([^0-9]*[a-zA-Z][a-zA-Z0-9_]+)
要指定没有前导数字,但我得到相同的结果。
那么,如果有前导数字,我怎样才能使这个 RegEx 工作以完全拒绝匹配?
注意例子中前面是逗号,但也可以是任意特定字符,其中:
,.<>/?:;'"[]{})(-+=
您可以使用 word boundary \b
.
\b([a-zA-Z][a-zA-Z0-9_]+)\b
此外,请注意 [a-zA-Z0-9_]
可以替换为 \w
。
\b([a-zA-Z]\w+)\b
要允许单个字母表,+
量词可以替换为 *
。
\b([a-zA-Z]\w*)\b
^
用这个!
/\b([^,0-9]\w*?)\b/g
演示:https://regex101.com/r/eU4nP1/1
不要忘记 g
修饰符,这样它会匹配多个结果。每种语言都有不同的添加修饰符的方法。这是 PHP.
不要忘记排除 ,
否则它将包含在结果中。
我创建了一个小的 RegEx 以在字符串中查找一些变量名:
([a-zA-Z][a-zA-Z0-9_]+)
在我的例子中,变量可以有整数和字母 + 下划线字符,但它不应该以数字开头。
问题是在这个字符串中:
"whateverTextBefore,246myVariableName25"
它将匹配myVariableName25,保留之前的246。我不想完全匹配这个。
我也试过这个模式:
([^0-9]*[a-zA-Z][a-zA-Z0-9_]+)
要指定没有前导数字,但我得到相同的结果。
那么,如果有前导数字,我怎样才能使这个 RegEx 工作以完全拒绝匹配?
注意例子中前面是逗号,但也可以是任意特定字符,其中:
,.<>/?:;'"[]{})(-+=
您可以使用 word boundary \b
.
\b([a-zA-Z][a-zA-Z0-9_]+)\b
此外,请注意 [a-zA-Z0-9_]
可以替换为 \w
。
\b([a-zA-Z]\w+)\b
要允许单个字母表,+
量词可以替换为 *
。
\b([a-zA-Z]\w*)\b
^
用这个!
/\b([^,0-9]\w*?)\b/g
演示:https://regex101.com/r/eU4nP1/1
不要忘记 g
修饰符,这样它会匹配多个结果。每种语言都有不同的添加修饰符的方法。这是 PHP.
不要忘记排除 ,
否则它将包含在结果中。