带有一个分隔符连字符的表达式的正则表达式

问题描述 投票:0回答:1

我将使用正则表达式来匹配表达式:

  1. 由一个(且仅一个)连字符分隔
  2. 2 个部分均不包含空格

所以,它匹配:

ss-ss
12-s2
11-11
%@2s-#1

并且不匹配:

s s-ss
ss-s s
s s-s s
1 s-1s
1s-1 s
1 s-1 s
ss-ss-ss
s1-s2-s3

有什么方法可以用正则表达式创建吗?

我尝试类似的事情:

^.[^ ]-[^ ]*

但它仅匹配具有任意数量连字符的表达式,以及例如出现的任何空格

 ss-ss-ss
 1 s-1 s
regex pattern-matching
1个回答
0
投票

正则表达式:

'^[^\ \-]+\-[^\ \-]+$'

应该做你想做的事。这是我所做的测试:

$ cat x.tst
ss-ss
12-s2
11-11
%@2s-#1
s s-ss
ss-s s
s s-s s
1 s-1s
1s-1 s
1 s-1 s
ss-ss-ss
s1-s2-s3
$ egrep  '^[^\ \-]+\-[^\ \-]+$' x.tst
ss-ss
12-s2
11-11
%@2s-#1
$ egrep  -v '^[^\ \-]+\-[^\ \-]+$' x.tst
s s-ss
ss-s s
s s-s s
1 s-1s
1s-1 s
1 s-1 s
ss-ss-ss
s1-s2-s3
© www.soinside.com 2019 - 2024. All rights reserved.