Javascript 在Django模型类的多行表示中捕获字段名
您好,我需要为vscode扩展编写一个正则表达式,它匹配字符串表示中类的字段:Javascript 在Django模型类的多行表示中捕获字段名,javascript,regex,Javascript,Regex,您好,我需要为vscode扩展编写一个正则表达式,它匹配字符串表示中类的字段: const str = ` title = models.CharField( blank=True ) text = models.TextField() author=ForeignKey( User, on_delete=models.CASCADE ) test_num_10 = models.TextFIeld() ` 从下面的多行
const str = `
title = models.CharField(
blank=True
)
text = models.TextField()
author=ForeignKey(
User,
on_delete=models.CASCADE
)
test_num_10 = models.TextFIeld()
`
从下面的多行字符串中,我需要捕获字符串标题、文本、作者、test_num_10
每组都有一个模式:
- 空白
- 捕获组,任何角色
- 可选空白
符号=
- 可选空白
- 任何字符
符号(
- 可选的任意字符
签名李>)
到目前为止,我的regexp看起来像这样
/\s+(.+)(\s+)?\=(\s+)?+\((.+)?\)。+/
。但是它与我期望的不匹配,请帮助我找出它。对于示例数据,您可以使用以下方法匹配您的值:
这将符合:
匹配零次或多次空白字符\s*
在组中捕获任何字符零次或多次非贪婪(.+?)
匹配零次或多次空白字符\s*
逐字匹配=
匹配零次或多次空格字符后跟任意字符一次或多次\s*+
在括号之间捕获组中的任何非贪婪字符\(([\s\s]*?)\)
匹配零次或多次空白字符\s*
在组中捕获任何字符零次或多次非贪婪(.+?)
匹配零次或多次空白字符\s*
逐字匹配=
匹配零次或多次空格字符后跟任意字符一次或多次\s*+
在括号之间捕获组中的任何非贪婪字符\(([\s\s]*?)\)
- 您的正则表达式饱受贪婪之苦(所有点星消耗到行尾,然后导致回溯)。如果有机会,您最好寻找一种限制模式:
(\S+)\s*=\s*[^(]*\(([^)]*)\)
匹配非空白字符\S
这与\s
\s
匹配除左括号外的任何内容(可选)[^(]*
匹配除右括号外的任何内容(可选)[^)]*
您的正则表达式饱受贪婪之苦(所有点星消耗到行尾,然后导致回溯)。如果有机会,您最好寻找一种限制模式:
(\S+)\s*=\s*[^(]*\(([^)]*)\)
匹配非空白字符\S
这与\s
\s
匹配除左括号外的任何内容(可选)[^(]*
匹配除右括号外的任何内容(可选)[^)]*
对于您的示例数据,请像这样尝试—它可以正常工作。把这个放在一个答案中,这样我就可以感谢你:)对于你的示例数据,像这样尝试它是有效的。把这个写进一个答案,这样我就可以谢谢你了:)