Regex 正则表达式中的星号
我正在尝试获取文本行中冒号后面的部分。例如,本文中的Regex 正则表达式中的星号,regex,Regex,我正在尝试获取文本行中冒号后面的部分。例如,本文中的 previous usc contact name:*assistant director of field education* agency name:*development corporation 我想得到以下信息: assistant director of field education 1010 development corporation 我尝试了下面的正则表达式 .*:\*?(.*)\**$ 它不起作用。目前正
previous usc contact name:*assistant director of field education*
agency name:*development corporation
我想得到以下信息:
assistant director of field education
1010 development corporation
我尝试了下面的正则表达式
.*:\*?(.*)\**$
它不起作用。目前正在发挥作用的是:
.*:\*?(.*)\*
我不明白为什么它在第二行工作,它没有星号,而regex需要星号。我不明白为什么第一个正则表达式不能正常工作
谢谢。简而言之:
第二个正则表达式*:\*?(.*)\*
有效,因为:
*
是否匹配:
和以前的usc联系人姓名
机构名称
:\*
(转义*
表示:匹配*
)
(.*)\*
最终将匹配每个字符串,直到最后一个*
(假设您错过了最后一行中的星星,则匹配:)
和现场教育助理总监
开发公司
第一个正则表达式失败的原因很难从给出的示例中看出
*:\*?(.*)\**$
表示行尾必须是零或多个*
(\**
)
假设您的换行符与提供的一样,它将只匹配开发公司
,因为锚定$
(行尾)在单行模式下通常表示“字符串的结尾”。因此正则表达式只能匹配一次。如果将修饰符更改为多行模式(意味着,$
匹配每个\r\n
而不仅仅是字符串的结尾),将提供所需的结果
单线模式,匹配:
开发公司
*:\*?(.*)\**$
多行模式匹配:
和现场教育助理总监
开发公司
*:\*?(.*)\**$
^
和$
的长度取决于修饰符:
给定字符串
Hello
World
在单行模式下使用^(.*)$
将匹配Hello World
。在多行模式下使用相同的模式将在两个不同的匹配组中匹配Hello
和World
在单行中,字符串将由正则表达式引擎处理,如
^Hello
World$
在多行模式下,引擎会像线程一样线程化它
^Hello$
^World$
“不工作”是什么意思?你用什么语言?当我在Python中尝试您的第一个正则表达式时,它是有效的-唯一的问题是
*
也与星号匹配。您可以通过在我测试第一行时将其更改为[^*]*
来修复此问题,因为“$”后面有一个尾随空格字符,但如果我将其去掉,它会工作。您的工作代码末尾是否有空格?还是就在这一页?1<代码>$默认情况下表示字符串结束。如果希望它匹配第2行的末尾,可能需要多行
标志。确保正则表达式引擎看到逃逸。在源代码的字符串文本中尝试将它们加倍:'\\'
。