万能的网友,求助正则表达式规则

有如下5种类型的文本,我想匹配后三种中的空格和_,用regex.ai试了一下,结果也不理想。
xxx_xxx
xxx xxx
xxx _xxx
xxx_ xxx
xxx _ xxx

这种或许可以:

(\s_\s)|(\s_)|(_\s)

效果如下:

注意 (\s_\s) 必须放在最前面,否则系统只会匹配 xxx _ xxx 字符串中的 __

1 个赞
xxx(\s+_\s*|\s*_\s+)xxx
3 个赞

大佬666

这个也可以,但是分两类感觉更好

不好意思啊,我没太理解您的需求。请问您是想只匹配空格和 _,还是后三种情况中的完整字符串?

您之前的理解是对的,我上面回复的意思的(\s+_\s*|\s*_\s+) VS (\s_\s)|(\s_)|(_\s)

两个正则表达式的区别如下:

  • (\s_\s)|(\s_)|(_\s) 只匹配如下三种情况:_空格空格_空格_空格。如果您希望使用分两组的形式,该表达式还可以写作 (\s?_\s|\s_\s?)
  • (\s+_\s*|\s*_\s+) 要求 _ 一侧至少存在1个空格(无上限),另一侧空格可有可无。

具体区别,请看下列图解:

(\s_\s)|(\s_)|(_\s)

02-fs8

2023-05-10 21-21-31 创建的截图-fs8

(\s+_\s*|\s*_\s+)

03-fs8

2023-05-10 21-21-09 创建的截图-fs8

正则表达式中,

  • x+ 表示 x 至少出现1次。等效于 x{1,}
  • x* 表示 x 可不出现,也可出现1次,也可出现多次。等效于 x{0,}
  • x? 表示 x 要么不出现,要么只出现1次。等效于 x{0,1}
1 个赞

类似问题找 AI 其实比较方便.

我昨天试了,帖子里删除的那个楼就是我问chatgpt的回答,然而发上来了以后验证了一下发现不对……反复给它指出来错误仍然无法给出正确答案

问题是:请给出一个能够匹配下列给定类型中后三个的表达式。
类型如下:

关键在于他能理解我在说什么,指出自己的错误的时候也能正确,唯独回答就不行了……