躲在难题后面还是分组?

时间:2019-02-22 11:45:30

标签: regex

对不起,我无法提出一个好的问题:

此正则表达式应找到单词“ period”,后跟一个空格和一个数字:

period.*(?=\s[0-9]{1})|alternative

如果我输入行TEST 2019 to period 3.csv,则正则表达式匹配period

如果我输入行TEST period 3 2019.csv,则正则表达式匹配period 3

我参加的比赛是period 3

您可以从regex101的此屏幕截图中了解我的意思:

目前,我已经使用如下所示的正向后角解决了这个问题:

(?<=period\s)[0-9]{1,4}|alternative

这与'period'之后的数字匹配,我可以为我的特定目的添加'period'。但是我不明白为什么会得到不同的比赛。

1 个答案:

答案 0 :(得分:1)

句点结束后不需要library(plotly) source("~/Werk/BigData/Process Mining/R/PM_Globals.R", local = TRUE) source("~/Werk/BigData/Process Mining/PromView/PromView/QuickFacts.R", local = TRUE) source("~/Werk/BigData/Process Mining/PromView/PromView/LoadData.R", local = TRUE) source("~/Werk/BigData/Process Mining/PromView/PromView/Filters.R", local = TRUE) server <- function(input, output, session) { output$menu <- renderMenu({ sidebarMenu( menuItem("Quick facts", tabName = "tab1"), menuItem("Doorloop", tabName = "tab2") ) }) isolate({updateTabItems(session, "tabs", "tab1")}) } ,因此只需将其从正则表达式中删除并像这样写

.*

这从字面上匹配period(?=\s[0-9]{1})|alternative ,后跟一个空格和一个数字(以您的积极眼光确保)。另外,您实际上不需要写period,因为这是默认设置,而且很多余。另外,如果您不希望句号在较大的文本中部分匹配,请在其前面使用单词边界{1}并将正则表达式更改为此,

\b

Demo

此外,您在\bperiod(?=\s[0-9])|alternative 后面的外观与文本(?<=period\s)[0-9]{1,4}|alternative的匹配是不正确的,实际上,后面的外观将仅匹配period前的数字和一个空格。

Check this Demo