我有这样一个字符串:
Hello [@foo] how are you [@bar] more text
最终,我需要修改匹配的子字符串的每个实例,但我还需要修改[@foo]
和[@bar]
之前/之后的每个子字符串。
下面的正则表达式匹配a[@]之前的子字符串
,
[@]
本身,然后是
[@]后面的子字符串
。
(.*?)(\[(@.+?)\])((.(?!(\[@.+?\])))*)
第一个匹配是“你好[@foo]你好”,第二个匹配是“[@bar]更多文本”。
注意第二个匹配开始时的空格。这就是问题所在。有没有办法让第一个匹配包含所有字符直到下一个
[@. ]
?
我的正则表达式包含
[@]后面的字符
后面没有〈code〉[@]的实例
,我无法找到任何方法使其包含所有字符,直到我们实际处于另一个<代码>[@]实例中
。
我真的很感兴趣的是我是否遗漏了什么-我当然觉得应该有一种更简单的方法来捕捉给定匹配周围的角色,或者一种更简单的方法来捕捉不属于匹配的角色。。。
这个正则表达式可能会帮助你获得这些变量。
(?:\[@[A-Za-z0-9]+\])
您还可以将任何其他字符添加到[A-Za-z0-9]
,例如。、、@:
`[A-Za-z0-9\.\+\@]`
并根据需要更改它:
(?:\[@[A-Za-z0-9\.\+\@]+\])
如果我理解正确,您希望将文本分成组,每个组都有一个[@. ]
实例,并且所有文本都必须匹配到一个组中。
试试(?:^. *?)? \[@. ? \]. *?(? =\[|$)
。
你有这个正则表达式:
(.*?)(\[(@.+?)\])((.(?!(\[@.+?\])))*)
^
看那个点。它先于消极展望。仅当满足负前瞻性时,它才匹配数据单元。如果负前瞻失败,dot将不匹配。这发生在匹配前的字符上。因此不包括空格字符。
要包含它,您只需更改顺序。将点放在传递负前瞻之后:
(.*?)(\[(@.+?)\])(((?!(\[@.+?\])).)*)
^
在此处观看现场演示
基于正则表达式直到但不包括,我试图匹配所有字符,直到一个单词边界。 例如,在以下字符串中匹配: 我正在使用: 一个否定集 有字边界 和一个加号中继器 这样地: 它应该查找一个“a”,然后为任何非单词边界的字符获取一个或多个匹配项。所以我希望它在
我尝试了这种模式,但发现第一个匹配的句子带有符号
我面临着与Java的匹配器的其他问题。我试图使用正则表达式匹配我的JSON的内容,而不使用外部库。我的JSON看起来像这样: 但是,我只想匹配上半部分中的单词,即在第一个匹配。我试图创建一个新的模式和匹配器,但我不知道如何进行,也不知道如何在第一次出现
这是打算在Java中使用的。想象以下示例输入: 我想匹配至少一个数字后面的所有字母字符。 所需输出:
我需要匹配一个字符串有单词而不是数字,我需要匹配特殊字符,如 $!:{} _如果它们是单词的一部分,但忽略其他。 我有一个正则表达式,它匹配单词并忽略数字,但如果特殊字符是单词的一部分,则无法计算出如何匹配,否则忽略。 这是我的正确答案-
我试图找出我的字符串是否包含从a到z的所有字母 我们可以通过其他方法解决这个问题,但我正在尝试仅使用模式和匹配器来解决它。