【问题标题】:Regex - can someone help define this pattern?正则表达式 - 有人可以帮助定义这种模式吗?
【发布时间】:2012-02-14 23:15:55
【问题描述】:

我的网站有一些错误的 URL 路由

因此,我正在尝试通过使用 Url 重定向器 过滤掉不良路由,这需要 正则表达式 来匹配和替换。


我正在努力寻找所有..

(s(2343243243....snip...1234723432))/aaa/bbbb

并将其替换为 ...

aaa/bbbb

不过,现在这些是规则......

文本是(,后跟一个A-Z a-z 0-9,然后是另一个(,然后是很多随机废话(这是一个GUID),然后是两个结束)),然后是一个斜线,然后是我的路线...... .

所以..

(a(231231....snip....34334))/xxx 应该是xxxx

(F(34324 ... snip ... 1231))/foo/bah/pewpew 应该是foo/bah/pewpew

干杯!

更新:

我也在测试我的正则表达式匹配at this website。所以这些将是我的输入。

  • (s(2343243243....snip...1234723432))/aaa/bbbb
  • (a(231231....snip....34334))/xxx
  • (F(34324 ... snip ... 1231))/foo/bah/pewpew

所以我正在使用正则表达式来匹配该文本,请:blush:

【问题讨论】:

  • @ruakh 我什么都没试过,因为我还在努力学习如何做正则表达式。其次,这是在..没有语言?我只是说..我有这些文本..并希望替换那个文本块
  • 这不是一个真正的问题。没有“正则表达式”之类的东西。这不能含糊地回答。指定确切语言、库、程序、工具 - 或将问题作为非真实问题结束。
  • @tchrist 我用更多信息更新了我的问题。这是否为我的问题提供了更好的背景信息?
  • @Pure.Krome 有点。它至少告诉我们你希望在哪里运行它:在别人的网站上。我不明白为什么人们不使用自己的工具在自己的系统上运行测试。使用sedperl 之类的东西很简单,甚至可以从命令行测试Java 模式。我无法理解为什么您会使用其他语言/工具进行测试,而不是您将用于部署的实际语言/工具:这对我来说似乎是灾难的秘诀。您只是不知道如何对这些东西进行基本的命令行测试吗?
  • @tchrist 是的,我愿意。我在 Windows 上,所以 AFAIK,没有安装 sed 或 perl。也不是java。所以我正在使用在线工具(实际上,@Marty 的链接非常好。我将从现在开始使用它)。其次,我在我自己的盒子上测试这个 -> 它在 IIS 中进行我的 URL 重写,但我正在使用一些正则表达式模式,我可以针对一些输入进行测试。我永远无法理解正则表达式语法:blush:

标签: regex


【解决方案1】:

^\([\w]\(.*\)\)/(.*)$ 并将其替换为找到的第一个组 $1l1%1 或您使用的任何语言,因为 () 字符定义了一个组(不要混淆\(\))。

^ 代表行首\w 代表字符[A-Za-z0-9_]$ 代表行尾

这是与您发布的字符串匹配的regexpal.com example

这里有一个gskinner.com working example,有组替换。

【讨论】:

  • 它必须匹配表达式末尾的))
  • 干杯!并且喜欢 gskinner 链接..它实际上是如何向我解释正则表达式的部分是什么!!!!这是赚钱的:)所以我现在可以学习这些东西了:)
  • 很高兴它有帮助! regexbuddy.com曾经有同样的行为,但我找不到它知道,我认为他们只是在卖它的软件:S
  • 为什么不简单地将^\([\w]\(.*\)\)/ 替换为空字符串?此外,如果斜杠后面的部分包含子字符串))/,这将不起作用。
  • @NiklasB。因为他要求一个正则表达式......,他可能需要更多的组,比如友好的网址,并且替换在那里不起作用。 (正如他所说:As such, i'm trying to filter out the bad routes by using a Url Redirector which requires Regular Expressions to match and replace.);)
【解决方案2】:

试试:\([A-Za-z0-9]\((.+?)\)\/(.*)

【讨论】:

  • 如果我找到匹配项,我会用什么替换。例如:我正在用这个网站测试我的输入:gnosis.cx/publish/programming/regular_expressions.html
  • 您可以将第二个匹配组替换为自身的子字符串减去第一个字符。那很容易。我不确定您使用的是哪种语言,因此我无法就该代码的执行提供建议。
  • 如果我在文本末尾有一个)(将被删除),它仍然匹配(这是不正确的)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
  • 2014-03-28
  • 1970-01-01
  • 2012-04-14
相关资源
最近更新 更多