如何将所有非单词字符更改为破折号并在一个正则表达式中修剪破折号字符串?

How to change all non-word characters to a dash and trim the string of dashes in one regex?

提问人:Olivier Grégoire 提问时间:12/11/2019 最后编辑:Olivier Grégoire 更新时间:12/11/2019 访问量:69

问:

我想找到一个正则表达式和替换来一次完成以下所有任务:

  1. 将所有结束词替换为相同的词,但替换为 (regex: , replacement:'ss's\bs)
  2. 删除字符串开头和结尾处的所有非单词字符 (regex: , replacement:^\W*(.*?)\W*$\1)
  3. 用单个破折号替换所有连续的其他非单词字符(正则表达式:,替换:\W+-)

如上所述,我能够一个接一个地编写所有规则,但所有这些规则加在一起要困难得多。我无法减少要使用的正则表达式数量......

我想说的是,如果它适用于 regex101,那就足够了。如果不可能,我可以接受,这样说就足够了。

例子:

Input               --->   Output
-----                      ------ 
Hello, World!       --->   hello-world
(%O'Shea's,*cAt!§   --->   o-sheas-cat
与正则表达式 语言无关

评论

1赞 revo 12/11/2019
您可以使用 Notepad++ 在一个步骤中完成所有操作。
0赞 ctwheels 12/11/2019
哪种语言?小写转换在正则表达式引擎中并不常见,因此无论您选择哪种方法,您都不会与语言无关。另外,是什么让 become 而不是 ??O'Shea'so-sheaso-shea-s
0赞 Olivier Grégoire 12/11/2019
@ctwheels 谢谢你,我不知道,所以我会说,如果一条规则是可选的,那就是那条规则。
0赞 ctwheels 12/11/2019
您将需要两个替换项:替换为 nothing,然后替换为 .然后转换为小写。'(?=s\b)\W+-
1赞 ctwheels 12/11/2019
P.S. @revo指的是什么可以从这个答案中看出

答: 暂无答案