繁体   English   中英

用于提取子字符串的正则表达式

[英]Regex for extracting a substring

我想从输入字符串中提取字符串,并从开头和结尾(如果存在)中删除“/”。

例如 :

输入字符串: /abcd输出字符串: abcd

输入字符串: /abcd/输出字符串: abcd

输入字符串: abcd/输出字符串: abcd

输入字符串: abcd输出字符串: abcd

输入字符串: //abcd/输出字符串: /abcd

public static void main(String[] args) {
    String abcd1 = "/abcd/";
    String abcd2 = "/abcd";
    String abcd3 = "abcd/";
    String abcd4 = "abcd";
    System.out.println(abcd1.replaceAll("(^/)?(/$)?", ""));
    System.out.println(abcd2.replaceAll("(^/)?(/$)?", ""));
    System.out.println(abcd3.replaceAll("(^/)?(/$)?", ""));
    System.out.println(abcd4.replaceAll("(^/)?(/$)?", ""));
}

将工作。

匹配第一个(^/)? 意味着在字符串的开头和(/$)?匹配0或1'/' (/$)? 表示在字符串末尾匹配0或1'/'。

使正则表达式"(^/*)?(/*$)?" 支持匹配多个'/':

String abcd5 = "//abcd///";
System.out.println(abcd1.replaceAll("(^/*)?(/*$)?", ""));

没有正则表达式的方法:

String input  = "/hello world/";

int length = input.length(),
    from   = input.charAt(0) == '/' ? 1 : 0,
    to     = input.charAt(length - 1) == '/' ? length - 1 : length;

String output = input.substring(from, to);

再猜一下: ^\\/|\\/$代替RegEx。

你可以试试

 String original="/abc/";
 original.replaceAll("/","");

然后调用trim以避免出现空格。

original.trim();

这个似乎有效:

/?([a-zA-Z]+)/?

说明:

/? :零或一次重复

([a-zA-Z] +):捕获字母特征,一次或多次重复

/? :零或一次重复

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM