2016-09-30 94 views
1

我是新來的正則表達式,我遇到了一個問題。如何查找和替換兩個變量的兩個字符串?

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

我想知道我該如何使用正則表達式來找到:| latitude = anynumber1 | longitude = anynumber2 | 並將其替換爲:| coordinates = {{coord|anynumber1|anynumber2}} |

,我有以下格式的許多網頁:| latitude = anynumber1 | longitude = anynumber2 |

只是經度和緯度的數字隨着每一頁的變化而變化,現在我不得不在所有頁面上將它改變成更新的格式。我如何使用正則表達式查找和替換?

+0

你已經試過了什麼嗎?你知道,'|'是特殊的正則表達式元字符,如果你打算將它們作爲文字字符匹配,則需要轉義。你使用什麼工具? –

+0

不,我沒有嘗試過任何東西。我對此完全陌生。我不知道從哪裏開始。是的,管道'|'需要在這裏算作一個字符串。 –

+0

無論如何,你打算使用什麼工具/編程語言? –

回答

1

您可以使用下面的正則表達式的基礎更換:

查找內容\|\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](這裏) –

相關問題