我试图-在正则表达式中使用反斜杠来理解短划线字符需要逃脱?
考虑一下:
var url = '/user/1234-username';
var pattern = /\/(\d+)\-/;
var match = pattern.exec(url);
var id = match[1]; // 1234
Run Code Online (Sandbox Code Playgroud)
正如您在上面的正则表达式中看到的那样,我正在尝试从url中提取id的数量.我也-使用反斜杠在我的正则表达式中逃脱了角色\.但是当我删除那个反斜杠时,仍然很好.... 换句话说,这两个都很好:
现在我想知道,哪一个是正确的(标准)?我需要在正则表达式中逃脱破折号吗?
我需要拆分单词和结束标记(某些类型的标点符号).奇怪的管道("|")可以算作结束标记.在我尝试添加管道之前,我的代码表示结束标记.添加管道使strsplit每个角色.逃避它导致和错误.如何在正则表达式中包含管道?
x <- "I like the dog|."
strsplit(x, "[[:space:]]|(?=[.!?*-])", perl=TRUE)
#[[1]]
#[1] "I" "like" "the" "dog|" "."
strsplit(x, "[[:space:]]|(?=[.!?*-\|])", perl=TRUE)
#Error: '\|' is an unrecognized escape in character string starting "[[:space:]]|(?=[.!?*-\|"
Run Code Online (Sandbox Code Playgroud)
结果我想:
#[[1]]
#[1] "I" "like" "the" "dog" "|" "." #pipe is an element
Run Code Online (Sandbox Code Playgroud) 这有效:
select Name
from Table
WHERE Name like '%[^0-9A-Za-z]%'
Run Code Online (Sandbox Code Playgroud)
但现在我还需要将短划线字符添加到标准中.
我有适合这种模式的数据:(x|y).x并且y可以是负数,并且在这种情况下,符号-存在.我正在尝试构建一个正则表达式来匹配x和y.
这是我目前的表达,这对我来说似乎有效,但是不起作用:
/\((-?\d+)\|(-?\d+)\)/
Run Code Online (Sandbox Code Playgroud)
这是原始数据:
?(-112|??-522??)
?(-112|??522??)
(112|-??522??)
(112|??522??)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我试图测试一个角色是否是一个特殊角色.
当我编写以下代码时,它的' - '字符失败:
import re
s = '-'
regex = re.compile('[!@#$%^&*()-+]')
if regex.search(s) == None:
print("Not found")
else:
print("Found")
Run Code Online (Sandbox Code Playgroud)
输出>>未找到
但是,如果我在模式中更改' - '字符的位置如下(代码的第3行),它可以正常工作
import re
s = '-'
regex = re.compile('[!@#$%^&*()+-]')
if regex.search(s) == None:
print("Not found")
else:
print("Found")
Run Code Online (Sandbox Code Playgroud)
输出>>找到
造成这种差异的原因是什么?我如何确保检测到这些字符?
我希望用户使用以下代码输入连字符
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z0-9]*$</var-value>
</var>
Run Code Online (Sandbox Code Playgroud)
我正在使用 struts 验证。所以请帮我解决这个问题。
编辑
用户可以在字符串的任何位置输入连字符,因此对于-应该在开头、中间还是结尾没有限制。
我有以下Java代码:
String data = "MaxL-450";
if(!data.matches("MaxL\\-*"))
throw new IllegalArgumentException("Did not match.");
Run Code Online (Sandbox Code Playgroud)
当我执行它时,抛出异常,因为显然正则表达式与我的data字符串不匹配.我的正则表达式有问题还是其他事情发生在这里?提前致谢.
regex ×7
java ×2
c# ×1
coordinate ×1
javascript ×1
php ×1
python ×1
r ×1
sql-server ×1
struts ×1