首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除非字母数字字符之间的空白

删除非字母数字字符之间的空白
EN

Stack Overflow用户
提问于 2015-02-17 15:30:24
回答 3查看 99关注 0票数 0

如何删除非字母数字字符之间的空白?例如

抗C6 / 36膜抗体D2 NS1 - P1特异性抗体

抗C6/36膜抗体D2 NS1-P1特异性抗体

EN

回答 3

Stack Overflow用户

发布于 2015-02-17 15:34:06

代码语言:javascript
复制
(?<=\W)[ ]+|[ ]+(?=\W)

尝试this.Replace by empty string.See演示。

https://regex101.com/r/zB3hI5/11

对于java,它将是

代码语言:javascript
复制
(?<=\\W)[ ]+|[ ]+(?=\\W)
票数 1
EN

Stack Overflow用户

发布于 2015-02-17 15:33:11

您可以使用此基于查找的regex进行搜索:

代码语言:javascript
复制
(?<![\p{L}\p{N}]) +| +(?![\p{L}\p{N}])

用空字符串代替。

RegEx演示

In Java:

代码语言:javascript
复制
String repl = input.replaceAll( "(?<![\\p{L}\\p{N}]) +| +(?![\\p{L}\\p{N}])", "" );

如果空格后面没有字母数字,或者前面没有字母数字,(?<![\p{L}\p{N}]) | (?![\p{L}\p{N}])的意思是匹配一个空格。

票数 0
EN

Stack Overflow用户

发布于 2015-02-17 15:39:08

试试像这样的regex:

代码语言:javascript
复制
public static void main(String[] args) {
    String s1 = "anti - C6 / 36 membrane antibodies";
    String s2 = "D2 NS1 - P1 - specific antibodies";
    String pattern = "\\s+(?=[^a-zA-Z0-9]+)|(?<=[^a-zA-Z0-9])\\s+";// replace all spaces either preceeded by or followed by a non-alphanumeric character
    System.out.println(s1.replaceAll(pattern, ""));
    System.out.println(s2.replaceAll(pattern, ""));
}

O/P:

代码语言:javascript
复制
anti-C6/36 membrane antibodies
D2 NS1-P1-specific antibodies
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28565017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档