正则表达式搜索并替换Autoblogged插件

时间:2012-01-24 21:44:54

标签: regex xml-parsing autoblogged

我正在使用Autoblogged将博客作为博客文章提取。我需要创建一个reg表达式来将项目的标题转换为我可以用作元数据的东西。我附上了一个我可以访问的后端屏幕。任何帮助将不胜感激!

以下是Feed中标题的示例。

2012年11月WY新墨西哥州举办的第一届培训活动

2012年11月在西雅图举行的第二届培训活动

我需要这样才能成为这个:

<what>Type One Training Event</what> <city>New New Mexico</city>, <%state>WY</state> <month>November</month> <year>2012</year>

<what>Type Two Training Event</what> <city>Seattle</city>, <state>WA</state> <month>November</month> <year>2012</year>

基本上说采取事件之前的任何内容并使其成为“什么”

在单词事件之后和逗号之前取任何东西并制作“城市”

用逗号后的两个字母表示“状态”

取最后两个字并制作月份和年份

自动记录后端: enter image description here

2 个答案:

答案 0 :(得分:0)

也许匹配:

^(.* Event) (.*), ([A-Z]{2}) +(?i(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)) +((?:19|20)\d{2})\b

编辑:重新评论,看起来你必须用分隔符包围你的正则表达式。尝试:

/insert_above_regex_here/

如果您想要不区分大小写,请执行以下操作:

/insert_above_regex_here_but_remove_(?i_and_matching_)/i

但是,如果您不区分大小写,则您的状态([A-Z]{2})也会匹配两个小写字母。如果这样就可以了,那就去吧。你还试着将正则表达式的那一部分更改为(?-i([A-Z]{2})),它表示“对此部分区分大小写”,但这取决于该引擎是否支持它(不用担心,如果它没有。)

然后替换为:

<what>$1</what> <city>$2</city>, <state>$3</state> <month>$4</month> <year>$5</year>

我不确定接口有什么样的正则表达式,所以你可能无法在月份正则表达式中执行(?i位(它只是使这一点不区分大小写) - 你只需要要小心,然后用一个大写字母和其余的小写字母写下你的月份,或者你可以修改正则表达式以允许大写。

答案 1 :(得分:0)

我们实际上有一个队列中的电子邮件,一旦我们获得v2.9更新,就会直接回复您。更新修复了正则表达式功能中的错误,但我想我会继续在这里发表评论,所以这个问题不仅仅是保持开放。

从Feed中提取信息的功能是AutoBlogged最酷最强大的功能之一,这是您可以使用这些功能执行的完美示例。

首先,以下是您将使用的正则表达式模式:

什么 :(。*)\ sTraining \ sEvent

城市:Training \ sEvent \ s([^,] *)

:。*,\ s([A-Z] {2})

要使用这些,请在Feed设置中创建新的自定义字段。请注意,自定义字段也使用与帖子模板相同的syntax,因此您可以使用强大的正则表达式功能从Feed中提取信息。这是字段的外观:

Custom Fields

创建这些自定义字段后,您可以在帖子模板中使用它们,它们将作为自定义字段添加到WordPress中的帖子中。

设置完这些自定义字段后,您可以在帖子模板中将其用作%what%%city%%state_code%。正如我之前提到的,这也将在WordPress的博客文章中创建自定义字段。如果您不想这样,则可以直接在帖子模板中使用%regex("%title%", "(.*)\sTraining\sEvent", "1")%代替%what%

语法的快速解释: 如果您使用%regex("%title%", "(.*)\sTraining\sEvent", "1")%,则意味着:

  • 从%title%字段
  • 获取此信息
  • 使用正则表达式模式(.*)\sTraining\sEvent
  • 使用匹配参考1,(.*)部分。