我试图找到不在块注释中的分号,以拆分成字符串数组(Java)。
以下是我目前正在使用的正则表达式:
(?<!\/\*.\s\S);(?!.*\s*\S*\*\/)
我试图使用负面的lookbehind和lookahead来实现这一目标,但是除了最后一个分号在块注释中的不同行上重复之外的所有分号都被找到了。然而,块注释中的最后一个分号不是。
我正在使用https://regexr.com/(选择了PCRE正则表达式引擎)来测试上面的正则表达式。
我正在使用以下示例代码对此进行测试:
SELECT * FROM TEST;
SELECT * FROM TEST;
/*
SELECT * FROM TEST;
SELECT * FROM TEST;
SELECT * FROM TEST;
SELECT * FROM TEST;
SELECT * FROM TEST;
*/
SELECT * FROM TEST;
我还使用了以下正则表达式,它似乎与上面的正则表达式得到了相同的结果,除了两个前瞻:
(?!\/\*\s*\S*)(;)(?!\s*\S*.*\*\/)
此外,似乎通过在正则表达式末尾的前瞻中添加\ s * \ S *。*,我可以“破解”#39;我解决这个问题的方法,因为每个添加似乎都解决了块注释中的一个分号的问题。例如,如果我有&#39; \ s * \ S *。*&#39;在最后一次预测中两次,我可以在块注释中注释掉最多两个分号。
基本上,我在这个地方到处都是......
总而言之,我只是试图在块注释之外得到分号。
正如你所知,我对正则表达不是很有经验,不幸的是,我几乎整天都在苦苦挣扎。任何指针将非常感谢!谢谢!
以下是一个方便的链接,可以在加载示例代码的情况下将您带到regexr中的正则表达式:https://regexr.com/3junf
答案 0 :(得分:0)
这将回答你的直接问题(有点,我没有使用正则表达式),但Jim是对的,如果你正在解析SQL,你需要一个解析器。
this.setState({src: image_url})