1

我有很多看起来像这样的字符串:“一个名字/另一个名字/别的东西”。

我想解决这个问题:“一个名字/另一个名字/别的东西”。

基本上只删除正斜杠前后的空格(而不是单词本身之间)。

我对编程一无所知,但我看了看,发现这可以用 Python 和 Regex 来完成。尽管我发现的信息量很大,但我有点不知所措。

4

6 回答 6

2

您可以使用以下模式:

(?:(?<=\/) | (?=\/))
  • (?:非捕获组。
  • (?<=\/)向后看/
  • |或者
  • (?=\/)积极前瞻/
  • )关闭非捕获组。

你可以在这里现场试一试。


Python 片段:

import re
str = 'a name / another name / something else'
print(re.sub(r'(?:(?<=\/) | (?=\/))','',str))

印刷:

a name/another name/something else
于 2018-08-06T21:22:33.383 回答
2

这里不需要正则表达式,因为您只是替换一串文字。

str = "a name / another name / something else"
print(str.replace(" / ", "/"))
于 2018-08-06T21:41:09.743 回答
1

这是一个不使用正则表达式的答案,我觉得更容易理解

string = "a name / another name / something else"
edited = "/".join([a.strip() for a in string.split("/")])
print(edited)

输出:

a name/another name/something else

.join()通过给定的分隔符连接序列的元素,文档

.strip()删除开头和结尾的空格,文档

.split()按字符将字符串拆分为标记,文档

于 2018-08-06T21:24:57.253 回答
0

str1成为你的字符串:

re.sub(" / ", "/" ,str1)
于 2018-08-08T18:32:24.200 回答
0

使用以下代码删除字符前后的所有空格/

import re
str = 'a name /  another name / something else'
str = re.sub(r'(?:(?<=\/)\s*|\s*(?=\/))','', str)

查看此文档以获取更多信息。

于 2019-01-09T04:51:58.167 回答
0

此模式将匹配任何数量的空白周围/并将其删除。我认为正则表达式比较容易理解

\s*([\/])\s*

有一个与反斜杠匹配的捕获组(这就是中间部分)。这些s*部分匹配空格(至少一个到任意次数)。

然后,您可以只用 a 替换这些匹配的字符串以/消除所有空格。

于 2018-08-06T21:26:33.783 回答