我正在尝试从字符串中获取特定部分。我必须得到以“@”开头且仅包含拉丁字母表中的字母的部分。
我想我必须创建一个正则表达式模式,但我不知道如何。
string test = "PQ@Alderaa1:30000!A!->20000";
var planet = "Alderaa"; //what I want to get
string test2 = "@Cantonica:3000!D!->4000NM";
var planet2 = "Cantonica";
还有一些其他部分我必须得到,但我会尽量自己得到。 (在 ':' 之后开始并且是一个整数;可以是“A”(攻击)或“D”(破坏)并且必须用“!”(感叹号)包围;在“->”之后开始并且应该是一个整数)
最佳答案
您可以使用捕获组获取单独的部分:
@([a-zA-Z]+)[^:]*:(\d+)!([AD])!->(\d+)
这将匹配:
@([a-zA-Z]+)
匹配 @
并在第 1 组中捕获 1+ 次 a-zA-Z [^:]*:
使用否定的 character class 匹配 0+ 次不是 :
,然后匹配 :
(如果后面可能只是可选数字,您也可能匹配 0+ 次数字 [0-9]*
) !([AD])!
匹配 !,在第 3 组和 A 或 D 中捕获,然后匹配 ! ->(\d+)
匹配 ->
并在第 4 组中捕获 1+ 位 Demo | C# Demo
关于c# - 从字符串中获取特定部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55502027/