1

我得到了这个字符串:

[[Fil:Hoganas_hamn.jpg|miniatyr|Höganäs Hamn.]] [[Fil:Hoganas_hamn_kvickbadet.jpg|miniatyr|Höganäs Hamn - Kvickbadet.]] [[Fil:Höganäs Jefast ny redigerad-1.jpg|miniatyr|Jefasthuset sett från väster med en del av den nya bryggan vid Kvickbadet.]] '''Höganäs''' är en [[tätort]] och [[centralort]] i [[Höganäs kommun]] i [[Skåne län]]. Höganäs blev stad 1936. Ursprungligen är Höganäs ett [[fiskeläge]] kring vilket en [[gruvindustri]] utvecklades för brytning av [[kol (bränsle)|kol]] och [[lera|leror]] för tillverkning av [[eldfast]] [[keramik]] ([[Höganäskrus]]). Gruvindustrin är numera nedlagd.

我想排除 [[FIL: + dynamic word]] 和每个 [[, ]] 的每个实例,但不排除只有 [[word]] 没有“FIL:”的单词本身。

我已经开始为它做一个正则表达式,但我被卡住了。

\[\[\Fil:|\]\]

我之后的输出应该如下所示:

'''Höganäs''' är en tätort och centralort i Höganäs kommun i Skåne län. Höganäs blev stad 1936. Ursprungligen är Höganäs ett fiskeläge kring vilket en gruvindustri utvecklades för brytning av kol (bränsle)|kol och lera|leror för tillverkning av eldfast keramik (Höganäskrus). Gruvindustrin är numera nedlagd.

我有 JQuery 但认为 .replace 应该可以解决问题吗?

4

3 回答 3

1

Try this, maybe you want also to adjust spaces

var string = "[[Fil:Hoganas_hamn.jpg|miniatyr|Höganäs Hamn.]] [[Fil:Hoganas_hamn_kvickbadet.jpg|miniatyr|Höganäs Hamn - Kvickbadet.]] [[Fil:Höganäs Jefast ny redigerad-1.jpg|miniatyr|Jefasthuset sett från väster med en del av den nya bryggan vid Kvickbadet.]] '''Höganäs''' är en [[tätort]] och [[centralort]] i [[Höganäs kommun]] i [[Skåne län]]. Höganäs blev stad 1936. Ursprungligen är Höganäs ett [[fiskeläge]] kring vilket en [[gruvindustri]] utvecklades för brytning av [[kol (bränsle)|kol]] och [[lera|leror]] för tillverkning av [[eldfast]] [[keramik]] ([[Höganäskrus]]). Gruvindustrin är numera nedlagd.";

var result = string.replace(/\[\[Fil:.*?\]\]/g, '').replace(/\[\[(.*?)\]\]/g, '$1');

console.log(result);
于 2012-05-10T15:32:24.900 回答
1

尝试用空字符串替换此 Regex 的所有匹配项:

\[\[Fil:[^\]]*\]\]|\[\[|\]\]

要打破这一点:

\[\[Fil:[^\]]*\]\]   matches [[Fil:...]]
\[\[                  matches remaining [[
\]\]                  matches remaining ]]
|                     combines with OR

要获得准确的输出,您可能还需要删除一些空格:

\[\[Fil:[^\]]*\]\]\s+|\[\[|\]\]

因此,在 JavaScript 中,您可以编写:

x.replace(/\[\[Fil:[^\]]*\]\]\s+|\[\[|\]\]/g, '');
于 2012-05-10T15:17:21.117 回答
0

您可以使用这样的正则表达式

\[\[.*?\]\]

然后使用replace的回调函数版本检查是否以then开头,Fil:然后有条件地决定是要返回一个空白字符串来删除它,还是只返回单词本身。

或者,使用 2 个正则表达式。首先用空白字符串替换Fil:那些,然后只用单词替换其余部分。您可以使用

\[\[(\w+)\]\]

或者类似的东西来捕捉[[word]]那些,然后用对这个词的反向引用来替换它,即,\1指的是括号中的内容。

于 2012-05-10T15:18:20.833 回答