正则表达式如何使第一个角色与众不同

时间:2017-07-25 20:34:10

标签: java regex

这是我的字符串

x = ["00.00"[h] for h in range(len("00.00"))]
print(x)
> ['0', '0', '.', '0', '0']

到目前为止这是我的正则表达式

>>> x = [input()[h] for h in range(len(input()))]
> what

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <listcomp>
IndexError: string index out of range

我想抓住&#34; john903&#34;

然而,这当前返回&#34; = john903&#34;

3 个答案:

答案 0 :(得分:1)

Javascript:(原来这个问题是用Javascript标记的)

您当前正在使用的正则表达式捕获所需的值,但返回一个数组。没有等号的匹配位于数组的第二个元素中:

var str = "username=john903?fullname=john&smith".match(/=([^?]*)/)[1] 
//str is now "john903"

Java:(OP评论说他们实际上是在使用Java)

String line = "username=john903?fullname=john&smith";
Pattern pattern = Pattern.compile("=([^?]*)");
Matcher matcher = pattern.matcher(line);
System.out.println(matcher.group(1));

答案 1 :(得分:0)

你需要利用积极的外观来实现这一目标。 Reference

这是一个合适的正则表达式

(?<==)([^?]*)

答案 2 :(得分:-1)

[A-Za-z0-9]+(?=[?])

这个正向前瞻搜索“?”后面的字符,不包括非字母和非数字。这是一个快速的解决方案,但可能不适用于所有情况。