如何使用正则表达式获取c#中的部分字符串

时间:2009-01-14 10:06:55

标签: c# regex

我尝试使用

(?<key>.{5}keyword.{5}?)

测试“其他字符串关键字其他文字”

它将获得“ring keyword othe”

我希望“akeyword other text”或“other string keyworda”或“akeywordc”也匹配。

如何修改正则表达式?


我有一个很长的字符串,我希望得到find关键字并使用perfix和后缀字符串

来获取它

要求5只是一个样本,它可能会变成任何数字,如50

我的问题是关键字的位置是否小于5并且不匹配。

当perfix或后缀字符串长度为

时,如何使用关键字获取perfix或后缀字符串

不明。


抱歉,我的问题不明确。

我想用关键字获取perfix或后缀字符串。我希望得到前缀或sufiix字符串最多5个字。

示例:

“abcde keyword abcde”我想得到“bcde keyword abcd”

当前缀字符串小于5字

“关键字abcde”我想要“关键字abcd”

或后缀字符串少于5个字

“abcd关键字a”我想得到“abcd关键字a”

4 个答案:

答案 0 :(得分:2)

这可能是你想要的:

(?<key>.{0,5}keyword[\s\S]{0,5})

答案 1 :(得分:1)

目前尚不清楚你想要传递和失败的内容;特别是.{5}keyword之前要求5个字符,所以我不确定“akeywordc”应该如何匹配。 [\s\S]{5}说“5个空格或非空格”......所以再次要求5个字符(可能是.{5})。

那么:你希望它如何表现?

例如,(?<key>.{1,5}keyword.{1,5})将在(贪婪)之前或之后匹配1到5个字符。

答案 2 :(得分:1)

此?

(?<key>.{0,5}keyword.{0,5})

当你学习如何解决这个问题时,你可以使用像The Regulator这样的东西进行破解;教一个人钓鱼,以及所有这些。

答案 3 :(得分:0)

根据Sebastiens的回答,这可能就像(.*?)keyword(.*?)一样简单,也可能是(.{0,5}),这仍然取决于你所说的“未知”。

你的意思是任何数量的匹配都是可以接受的,或者只是特定数量的匹配,但你不知道这个数字直到运行时 - 在这种情况下你怎么知道这个数字在运行时(我们无法回答对你而言)。

如果你发布了一组匹配的样本字符串和不匹配的样本字符串,那将是最好的。


从OP更新2编辑:那么您似乎需要标记和sebastiens答案的组合

(?<key>.{0,5}keyword.{0,5})

将包含0到5个字符的前缀和0到5个后缀字符以及匹配