如何查找和替换两个变量的两个字符串?

问题描述:

我是新来的正则表达式,我遇到了一个问题。如何查找和替换两个变量的两个字符串?

我有以下文字:| latitude = anynumber1 | longitude = anynumber2 |

我想知道我该如何使用正则表达式来找到:| latitude = anynumber1 | longitude = anynumber2 | 并将其替换为:| coordinates = {{coord|anynumber1|anynumber2}} |

,我有以下格式的许多网页:| latitude = anynumber1 | longitude = anynumber2 |

只是经度和纬度的数字随着每一页的变化而变化,现在我不得不在所有页面上将它改变成更新的格式。我如何使用正则表达式查找和替换?

+0

你已经试过了什么吗?你知道,'|'是特殊的正则表达式元字符,如果你打算将它们作为文字字符匹配,则需要转义。你使用什么工具? –

+0

不,我没有尝试过任何东西。我对此完全陌生。我不知道从哪里开始。是的,管道'|'需要在这里算作一个字符串。 –

+0

无论如何,你打算使用什么工具/编程语言? –

您可以使用下面的正则表达式的基础更换:

查找内容\|\s*latitude\s*=\s*(\d+)\s*\|\s*longitude\s*=\s*(\d+)\s*\|
替换| coordinates = {{coord|$1|$2}} |

this regex demo

详细

  • \| - 字面|
  • \s* - 0+空格
  • latitude - 串latitude
  • \s*=\s* - 一个=包围0+空格(\s*
  • (\d+) - 第1组捕获1或更多数字
  • \s*\|\s* - a |用0+空格包围
  • longitude - 一个longitude文本
  • \s*=\s* - 一个包围0+空格
  • (\d+)| - 组2捕捉1个或多个数字
  • \s*\| - 0+空格+ |

$1并且替换模式中的$2分别将捕获的值插入到组1和2中。

enter image description here

+0

伟大的工作。谢谢!如果|会发生什么?纬度= anynumber1 |经度= anynumber2 |是两条不同的路线? –

+0

\ s'匹配水平和垂直空白符号无关紧要。 “*”量词使其匹配0个或更多的事件。有关正则表达式的更多详细信息,请查看[Regular-Expressions.info](http://regular-expressions.info)网站。 –

+0

当我换行时它不工作。参见[http://regexstorm.net/tester?p=%5c%7c%5cs*latitude%5cs*%3d%5cs*(%5cd%2b)%5cs*%5c%7c%5cs*longitude%5cs* %三维%5CS *(%5CD%2b)的%5CS *%5C%7C与I =%7C +纬度+%3D + 1个++%0D%0A%7C +经度+%3D + 2 ++%0D%0A%7C +纬度+%3D + 321 ++%0D%0A%7C +经度+%3D + 22 ++%0D%0A%7C +纬度+%3D + 31 ++%0D%0A%7C +经度+%3D + 42&R =%7C +坐标+%3d +%7b%7bcoord%7c%241%7c%242%7d%7d +%7c](这里) –