Eph*_*eal 2 python regex python-3.x
我正在尝试解析以下文本
# ---------------------------------------------------------------------------- #
# Packages
# ---------------------------------------------------------------------------- #
set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "file_1_test_1_qip.vhd"]
set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "file_2_test_1_qip.vhd"]
set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "file_3_test_1_qip.vhd"]
# Register Tool set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "file_INVALID_test_1_qip.vhd"]
# ---------------------------------------------------------------------------- #
# Sub Modules
# ---------------------------------------------------------------------------- #
set_global_assignment -name QIP_FILE [file join $::quartus(qip_path) "module_test_2.qip"]
set_global_assignment -name QIP_FILE [file join $::quartus(qip_path) "module_test_3.qip"]
# ---------------------------------------------------------------------------- #
# Module Files
# ---------------------------------------------------------------------------- #
set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "file_4_test_1_qip.vhd"]
set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "file_5_test_1_qip.vhd"]
Run Code Online (Sandbox Code Playgroud)
使用正则表达式:
(?<=_FILE).*"(.+)"
Run Code Online (Sandbox Code Playgroud)
这也可以正常工作,并为我提供上面文本中的所有文件名,但它也为我提供已注释掉的行的文件名。
我试图制作一个 RegEx 来忽略这一点,但我无法让它工作。
这是我尝试过的
(?<!#)(?:(?<=_FILE).+"(.+)")
Run Code Online (Sandbox Code Playgroud)
请查看RegEx 101
问候埃弗雷尔
要忽略注释行,您必须从行的开头开始匹配并匹配除以下内容之外的任何内容#:
^[^#\n]*(?:(?<=_FILE).+"(.+)")
Run Code Online (Sandbox Code Playgroud)
要不就
^[^#\n]*_FILE.+"(.+)"
Run Code Online (Sandbox Code Playgroud)
两种模式都需要多行标志m。
| 归档时间: |
|
| 查看次数: |
8992 次 |
| 最近记录: |