繁体   English   中英

正则表达式删除部分字符串并替换另一部分

[英]RegEx remove part of string and and replace another part

我在使用 RegEx(使用 C#)获得所需结果时遇到了挑战,我希望社区可以提供帮助。

我有一个 URL 格式如下: https://somedomain.com/subfolder/category/?abc=text:value&ida=0&idb=1

我想做两个修改,具体来说:

1) 删除 'value' 之后的所有内容,例如 '&ida=0&idb=1'

2) 将“类别”替换为“新类别”

所以结果是: https://somedomain.com/subfolder/newcategory/?abc=text:value

我可以从 1) 中删除字符串,例如上面的 ^[^&]+,但我无法弄清楚如何替换“类别”substring。

任何帮助或指导将不胜感激。

先感谢您。

使用以下内容:

  • 查找:/( /(category/.+?value)&.+ .+
  • 替换: /new$1/new\1取决于您的正则表达式风格

演示和解释


根据评论更新。

如果新名称是completely_different_name ,请使用以下内容:

  • 查找:/category( /category(/.+?value)&.+ .+
  • 替换: /completely_different_name$1

演示和解释

您在这里没有指定语言,我主要研究 python 所以解决方案在 python 中。

url = re.sub('category','newcategory',re.search('^https.*value', value).group(0))

解释re.sub 用于将 c 中的值 a 替换为 b。

re.search 用于匹配字符串中的特定模式并将值存储在组中。 所以在上面的代码中,re.search 会将值从“https 到值”存储在第 0 组中。

使用 Python 并且只使用内置字符串方法(这里不需要正则表达式):

url = r"https://somedomain.com/subfolder/category/?abc=text:value&ida=0&idb=1"

new_url = (url.split('value')[0] + "value").replace("category", 'newcategory')

print(new_url)

输出:

https://somedomain.com/subfolder/newcategory/?abc=text:value

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM