有没有办法创建一个RegEx匹配*-*-*-*-*
(一个包含4“的字符串,所以它匹配1-2-3-4-5
,AB-CD-EF-GH-IJ
但不匹配9-8-7
?
最近我尝试过的RegEx是([\w\-\.]+[\-\.][\w\-\.]+[\w\-\.]+)
但它也匹配9-8-7。
答案 0 :(得分:1)
没有其他限制,-([^-]+-){3}
符合您的要求。
你自己的尝试只涉及三次重复,并允许一段时间或空格而不是任何破折号。
答案 1 :(得分:0)
也许像这样-
({{1}}以外的任何字符,一次或多次,后跟短划线)4次,然后任何其他字符一次或多次
答案 2 :(得分:0)
您可以使用([^-])+-([^-])+-([^-])+-([^-])+-([^-])+
。 ([^-])+
将匹配其中没有-
的每个字符串。
答案 3 :(得分:0)
(.*([^-]|^)-){4}
.*
- 零个或多个字符([^-]|^)
- 一个字符,不是短划线或字符串本身的开头-
- 字面意思{4}
- 整件事重复了4次答案 4 :(得分:0)
您可以使用此正则表达式:
^[^-.]+([-.])(?:[^-.]+\1){3}[^-.]+$
<强>解体:强>
^ # start
[^-.]+ # match 1 or more of non-dot & non-hyphen char
([-.]) # match 1 dot OR hyphen char and capture it as group #1
(?: # non-capturing group start
[^-.]+ # match 1 or more of non-dot & non-hyphen char
\1 # match same char as captured in group #1
){3} # non-capturing group end, repeat 3 occurrences of this group
[^-.]+ # match 1 or more of non-dot & non-hyphen char
$ # end
答案 5 :(得分:0)
一般来说,如果你将X设置为&#39;除了非相邻连字符之外的任何字符,那么你的模式就会变成
new("SpatialPointsDataFrame"
, data = structure(list(x = c(38.4129, 38.41697, 38.41501), y = c(4.95659, 4.95809, 4.96122)),
.Names = c("x", "y"), row.names = c(105L, 166L, 185L), class = "data.frame")
, coords.nrs = numeric(0)
, coords = structure(c(434912.0166297, 435363.392542353, 435146.398500838, 547894.637850701, 548060.055746692, 548406.25007762),
.Dim = c(3L, 2L), .Dimnames = list(c("105", "166", "185"), c("x", "y")))
, bbox = structure(c(434912.0166297, 547894.637850701, 435363.392542353, 548406.25007762),
.Dim = c(2L, 2L), .Dimnames = list(c("x", "y"), c("min", "max")))
, proj4string = new("CRS", projargs = "+proj=utm +zone=37 +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0")
)
因此,挑战只是将X定义为所有非连字符或相邻连字符的字符串。
X*-X+-X+-X+-X*
撰写两个......
([^-]|(--+))
在这里试试...... https://regex101.com/r/lG3hM5/1