Regex 复杂正则表达式情况
我的结果列表如下所示:Regex 复杂正则表达式情况,regex,Regex,我的结果列表如下所示: 1lemon_king9mumu (2-1), YearofHell (2-0), kriswithak (2-1)0.44440.75000.4444 2mumu6lemon_king (1-2), MogwaiAC (2-0), Dathanja (2-1)0.66670.62500.5655 3MogwaiAC6Dathanja (2-0), mumu (0-2), Jebnarf (2-1)0.55560.57140.5417 4Jebnarf6YearofHel
1lemon_king9mumu (2-1), YearofHell (2-0), kriswithak (2-1)0.44440.75000.4444
2mumu6lemon_king (1-2), MogwaiAC (2-0), Dathanja (2-1)0.66670.62500.5655
3MogwaiAC6Dathanja (2-0), mumu (0-2), Jebnarf (2-1)0.55560.57140.5417
4Jebnarf6YearofHell (2-1), kriswithak (2-0), MogwaiAC (1-2)0.44440.62500.4266
5YearofHell3Jebnarf (1-2), lemon_king (0-2), Mig82 (2-1)0.66670.37500.6012
6Dathanja3MogwaiAC (0-2), Mig82 (2-1), mumu (1-2)0.55560.37500.5417
7Mig823Bye, Dathanja (1-2), YearofHell (1-2)0.33330.42860.3750
8kriswithak0Jebnarf (0-2), lemon_king (1-2)0.83330.20000.6875
我希望能够在排名(第一个数字)后提取该人的用户名,但它与该玩家以及他们的第一个对手获得的分数混合在一起
例如,第一个人的名字是“Lemon_king”,他的对手是“Mumu”、“YearofHell”和“Kriswithak”。右边的数字对我来说无关紧要,但我的主要问题是球员赢得的分数在那里。Lemon_King以9分获得第一名。我通常只是通过查找介于1和9之间的字符串来获取名称,但玩家用户名中也可以有9
有谁能想出一个好办法来解决这个问题,能够抓住人的用户名
谢谢我想你们需要一个用户名列表来进行比较;对于正则表达式来说,结果列表似乎不够“正则” 比如那条线
7Mig823Bye, Dathanja
可能是“Mig82”对“拜拜,达尚贾”,3分,但也可能是“Mig8”,23分,“拜拜,达尚贾”或“Mig8”,2分,“拜拜,达尚贾”
对吗?因为如果是这样的话,你就不会得到一个简单的解决方案
编辑:威尔逊评论说,获取用户名列表可能是一种选择。在这种情况下,类似以下内容可能会起作用:
/^\d+?(username1|username2|username3)\d+?(username1|username2|username3)/
这可能需要一些摆弄才能正确
以下是一个plnkr,用您提供的数据演示:
也就是说,正则表达式可能不是这个工作的合适工具。我认为您需要一个用户名列表来进行比较;对于正则表达式来说,结果列表似乎不够“正则” 比如那条线
7Mig823Bye, Dathanja
可能是“Mig82”对“拜拜,达尚贾”,3分,但也可能是“Mig8”,23分,“拜拜,达尚贾”或“Mig8”,2分,“拜拜,达尚贾”
对吗?因为如果是这样的话,你就不会得到一个简单的解决方案
编辑:威尔逊评论说,获取用户名列表可能是一种选择。在这种情况下,类似以下内容可能会起作用:
/^\d+?(username1|username2|username3)\d+?(username1|username2|username3)/
这可能需要一些摆弄才能正确
以下是一个plnkr,用您提供的数据演示:
也就是说,正则表达式可能不是此项工作的合适工具。如果您需要介于第一个数字和第二个数字之间的内容,请提供更多信息:
[0-9]+([^0-9])
第一个组将包含第一个用户名
请对此进行评论(因此我选择)编辑您的问题,并提供更多详细信息。如果您想了解第一个数字和第二个数字之间的内容,请提供更多信息:
[0-9]+([^0-9])
第一个组将包含第一个用户名
请对此发表评论(因此我选择)编辑您的问题,但要更详细。我不会使用正则表达式。调试它将是一件痛苦的事情,而且你永远不会100%确定你已经涵盖了所有的边缘案例
尝试使用您选择的语言的内置字符串操作函数进行“手动”解析。我不会使用正则表达式。调试它将是一件痛苦的事情,而且你永远不会100%确定你已经涵盖了所有的边缘案例
尝试使用您选择的语言的内置字符串操作函数进行“手动”解析。据我所知,您希望
(?x) # allow whitespace and comments just like
# any real programming language
^ # beginning of line
( \d+ ) # starts with one or more digits: CAPTURE 1
(?= \D ) # must have a non-digit following
( \w+ ) # capture one or more "word" characters: CAPTURE 2
( \d ) # next is a single digit: CAPTURE 3
(?= \D ) # must have a non-digit following
( \w+ ) # capture one or more "word" characters: CAPTURE 4
# now add things for the rest of the line if you want
您的用户名现在应该在第二个捕获中。我比严格必要的要小心一点,但如果你最后吃了这个,你可能需要它。我已经把所有捕获的东西都放好了,以防你想四处移动或取出更多的东西。据我所知,你想要这样的东西
(?x) # allow whitespace and comments just like
# any real programming language
^ # beginning of line
( \d+ ) # starts with one or more digits: CAPTURE 1
(?= \D ) # must have a non-digit following
( \w+ ) # capture one or more "word" characters: CAPTURE 2
( \d ) # next is a single digit: CAPTURE 3
(?= \D ) # must have a non-digit following
( \w+ ) # capture one or more "word" characters: CAPTURE 4
# now add things for the rest of the line if you want
您的用户名现在应该在第二个捕获中。我比严格必要的要小心一点,但如果你最后吃了这个,你可能需要它。我已经把所有的捕获都放好了,以防你想四处移动或取出更多的东西。很难/几乎不可能找到一个好的不容易出错的正则表达式,因为用户名也可以包含数字。如果可能的话,将文本更改为JSON对象会更容易。用户名中可以有数字吗?更好的问题是,为什么您的结果列表一开始就是这样…@acheong87是正确的。这些数据是垃圾。不要因为依赖这种垃圾格式而使问题复杂化。试着自己写一些东西,如果它不起作用,就把它带给我们帮助你。你开始,我们帮助。我们不是为你写的。向我们展示您尝试过的实际代码,然后我们可以从中帮助您。如果你自己先尝试一下,你很可能会得到非常接近的答案。很难/几乎不可能找到一个好的不容易出错的正则表达式,因为用户名也可以包含数字。如果可能的话,将文本更改为JSON对象会更容易。用户名中可以有数字吗?更好的问题是,为什么您的结果列表一开始就是这样…@acheong87是正确的。这些数据是垃圾。不要因为依赖这种垃圾格式而使问题复杂化。试着自己写一些东西,如果它不起作用,就把它带给我们帮助你。你开始,我们帮助。我们不是为你写的。向我们展示您尝试过的实际代码,然后我们可以从中帮助您。如果你先亲自尝试的话,很可能你会非常接近答案。我不认为你知道“正则表达式”中的“正则”是什么意思。是的,理想情况下,我希望获得7级:“Mig72”3分,而不是通过搜索所有玩家的用户名,这绝对是一种可能性,Jared的意思是,正则表达式无法知道他的3个解决方案中哪一个是正确的。除非你能加上额外的解释:排名总是个位数吗?用户名可以以数字开头吗?用户名列表仅在t之前有用