[英]using regex to capture / inclusive and select characters after
我有正则表达式
[/].([a-z/!@$%^&*()-+><~*\.]+)
我正在尝试捕获/(含)之后的所有内容,直到#或? (独家)。
我尝试过正则表达式的字符串:
/hello.there#test正确地给了我/hello.there
但是,仅对/进行尝试不会对任何内容进行分组。 它也不会在字符串/ h中分组任何内容。 我认为可以做到这一点,因为我在要捕获的场景中加入了z。
如何改进正则表达式,以便在排除#和之后捕获/(包括)和所有内容? 而忽略#和?之后的任何内容
谢谢
当您需要匹配某些字符而不是其他字符时,您应该考虑否定的字符类 。
匹配除#
和?
任何字符?
使用[^#?]
。 要匹配零个或多个出现,请在其后添加*
。 采用
/([^#?]*)
Java演示 :
String str = "/hello.there#test";
Pattern ptrn = Pattern.compile("/([^#?]*)");
Matcher matcher = ptrn.matcher(str);
if (matcher.find()) {
System.out.println(matcher.group()); // => /hello.there
System.out.println(matcher.group(1)); // => hello.there
}
如果要在#
和?
之后忽略字符?
,然后直接排除那些。
(/[^#?]*)
在此正则表达式中, /
在组中,因此您可以捕获它,并且[^#?]
包括除#
和?
之外的所有字符?
(当然,这些字符之后的任何字符都将被忽略)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.