如何用一个替换重复的短语

时间:2019-01-10 01:42:38

标签: r regex

我有以下字符串

[HttpContext.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.ReadOnly)]

我想将字符串折叠成

public class SetSessionReadOnlyAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { filterContext.HttpContext.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.ReadOnly); } }

如何使用正则表达式执行字符串操作?

我可以识别出重复的短语“ PC Model”,但是我不能删除多余的短语而只保留第一个。

1 个答案:

答案 0 :(得分:0)

以下内容(在Python中)对您有用吗?

str1 = "PC Model 123, PC Model 456, PC Model XYZ, PC Model A156"
str2 = re.sub(r', PC Model\s+', r'/', str1)

输出

 PC Model 123/456/XYZ/A156

[编辑] 我可以考虑一种方法,但是需要多次重新运行该表达式。

str1 = "NB Model 555, PC Model 123, PC Model 456, PC Model XYZ, PC Model A156, PC Model 999, NEW Model FOO"
str2 = re.sub(r'(\S+ Model) (\S+),\s+\1 (\S+)', r'\1 \2/\3', str1)
str2 = re.sub(r'(\S+ Model) (\S+),\s+\1 (\S+)', r'\1 \2/\3', str2)

输出:

B Model 555, PC Model 123/456/XYZ/A156, PC Model 999, NEW Model FOO

它成对地组合模型,因此您需要运行几次表达式。请注意,同一模型必须是连续的