Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 单词内部匹配的正则表达式_Regex - Fatal编程技术网

Regex 单词内部匹配的正则表达式

Regex 单词内部匹配的正则表达式,regex,Regex,假设我有以下类似的文本: _startOneEnd _startTwoEnd _startThreeEnd 我想在以下方面进行匹配: 以开头\u开始 以结束结束 我想要捕获介于两者之间的位,例如,上面变量中的1、2、3: 有人能推荐一个正则表达式来捕捉这一点吗?如果每一行输入只包含与示例类似的文本,类似这样的方法应该可以: /^_start(.*)End$/ ^将模式锚定到字符串的开头。$将其锚定到字符串的末尾。括号表示中间部分。在C#中,您可以使用: (?<=_start).*(?=

假设我有以下类似的文本:

_startOneEnd
_startTwoEnd
_startThreeEnd
我想在以下方面进行匹配: 以开头\u开始结束结束 我想要捕获介于两者之间的位,例如,上面变量中的1、2、3:


有人能推荐一个正则表达式来捕捉这一点吗?

如果每一行输入只包含与示例类似的文本,类似这样的方法应该可以:

/^_start(.*)End$/
^
将模式锚定到字符串的开头。
$
将其锚定到字符串的末尾。括号表示中间部分。

C#
中,您可以使用:

(?<=_start).*(?=End)
_start((One)|(Two)|(Three))End

<代码>(?< P>)中间的部分是否仅是给出的例子尚不清楚。 如果是,请使用以下命令:

(?<=_start).*(?=End)
_start((One)|(Two)|(Three))End
如果不是,它可能是任何东西,请尝试以下方法:

_start(.*?)End

请注意,匹配是非贪婪的。

您使用的是什么语言?只有当您为此正则表达式启用多行模式时才可以。然后它才是正确的。@JanDvorak它看起来不像他试图匹配的模式跨行。我假设输入是逐行处理的。您是对的。这些看起来像是单独的字符串。描述仍然很模糊(“字符串的“=>”行的)JordValk OK,我根据你的建议修改了它。在这个问题上有一个警告字,在问题中没有被勾画出来。这将在<代码>星际调结束< /COD>匹配。因此如果你不想在中间部分匹配空白,则将<代码> .<代码>改为更合适的,可能是代码> \W。不支持lookback。我知道的任何其他正则表达式引擎都可以做到这一点。并不是所有的东西都围绕着JavaScript。问题中有没有提到它?我听起来像所有东西都围绕着JavaScript?我只是在这里提到JS作为局外人,就像它可能是JavaScript一样。对不起,我误解了你的评论:)在这种情况下,“向后看/向前看”似乎有些过分,没有真正的必要。