Skip to content

Commit

Permalink
Continue designing regex patterns until realised there are incomplete…
Browse files Browse the repository at this point in the history
… lines
  • Loading branch information
jank324 committed Sep 4, 2023
1 parent c479ca4 commit d1910b3
Showing 1 changed file with 49 additions and 39 deletions.
88 changes: 49 additions & 39 deletions test_bmad.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -125,53 +125,58 @@
},
{
"cell_type": "code",
"execution_count": 27,
"execution_count": 50,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ssp1h: pipe, l = 0.05, type =\"@1,1.38s3.00\", descrip = \"deferred sextupole\"\n",
"dbsy52d[l]\n",
"\n",
"######################################\n",
"num_successful: 379 / 14409\n",
"num_successful: 3658 / 14409\n",
"--------------------------------------\n",
"num_property: 10\n",
"num_variable: 223\n",
"num_element: 146\n",
"num_line: 0\n",
"num_incomplete_line_begin: 0\n",
"num_incomplete_line_middle: 0\n",
"num_incomplete_line_end: 0\n",
"num_property_assignment = 210\n",
"num_variable_assignment = 1280\n",
"num_element = 2024\n",
"num_line = 49\n",
"num_incomplete_line_begin = 24\n",
"num_incomplete_line_middle = 44\n",
"num_incomplete_line_end = 24\n",
"num_continued_expression = 3\n",
"######################################\n"
]
}
],
"source": [
"property_pattern = r\"[a-z0-9]+\\[[a-z_]+\\]\\s*=\\s*[a-z0-9\\*\\+\\-\\/\\(\\)\\[\\]\\.\\s]+\"\n",
"variable_pattern = r\"[a-z0-9_]+\\s*=\\s*[a-z0-9\\*\\+\\-\\/\\(\\)\\._]+\"\n",
"element_pattern = r\"[a-z0-9_]+\\:\\s*[a-z]+(\\s*\\,\\s*[a-z0-9]+\\s*=\\s*[a-z0-9_\\\"\\/\\.@]+)*\"\n",
"property_assignment_pattern = r\"[a-z0-9]+\\[[a-z_]+\\]\\s*=.*\"\n",
"variable_assignment_pattern = r\"[a-z0-9_]+\\s*=.*\"\n",
"element_pattern = r\"[a-z0-9_]+\\:.*\"\n",
"line_pattern = r\"[a-z0-9_]+\\s*\\:\\s*line\\s*=\\s*\\((\\s*[a-z0-9_]+\\s*\\,)*\\s*[a-z0-9_]+\\s*\\)\"\n",
"incomplete_line_pattern_begin = r\"[a-z0-9_]+\\s*\\:\\s*line\\s*=\\s*\\((\\s*[a-z0-9_]+\\s*\\,)*\"\n",
"incomplete_line_pattern_middle = r\"(\\s*[a-z0-9_]+\\s*\\,)*\"\n",
"incomplete_line_pattern_end = r\"(\\s*[a-z0-9_]+\\s*\\,)*\\s*[a-z0-9_]+\\s*\\)\"\n",
"coninued_expression_pattern = (\n",
" r\"[\\+\\-\\*\\/]?[a-z0-9_\\[\\]]+(\\s*[\\+\\-\\*\\/]\\s*[a-z0-9_\\[\\]]+)+(\\s*[\\+\\-\\*\\/]\\s*\\&)?\"\n",
")\n",
"\n",
"num_successful = 0\n",
"num_property = 0\n",
"num_variable = 0\n",
"num_property_assignment = 0\n",
"num_variable_assignment = 0\n",
"num_element = 0\n",
"num_line = 0\n",
"num_incomplete_line_begin = 0\n",
"num_incomplete_line_middle = 0\n",
"num_incomplete_line_end = 0\n",
"num_continued_expression = 0\n",
"for line in lines:\n",
" if re.fullmatch(property_pattern, line):\n",
" if re.fullmatch(property_assignment_pattern, line):\n",
" num_successful += 1\n",
" num_property += 1\n",
" elif re.fullmatch(variable_pattern, line):\n",
" num_property_assignment += 1\n",
" elif re.fullmatch(variable_assignment_pattern, line):\n",
" num_successful += 1\n",
" num_variable += 1\n",
" num_variable_assignment += 1\n",
" elif re.fullmatch(element_pattern, line):\n",
" num_successful += 1\n",
" num_element += 1\n",
Expand All @@ -187,6 +192,9 @@
" elif re.fullmatch(incomplete_line_pattern_end, line):\n",
" num_successful += 1\n",
" num_incomplete_line_end += 1\n",
" elif re.fullmatch(coninued_expression_pattern, line):\n",
" num_successful += 1\n",
" num_continued_expression += 1\n",
" else:\n",
" print(line)\n",
" break\n",
Expand All @@ -195,28 +203,29 @@
"print(\"######################################\")\n",
"print(f\"num_successful: {num_successful} / {len(lines)}\")\n",
"print(\"--------------------------------------\")\n",
"print(f\"num_property: {num_property}\")\n",
"print(f\"num_variable: {num_variable}\")\n",
"print(f\"num_element: {num_element}\")\n",
"print(f\"num_line: {num_line}\")\n",
"print(f\"num_incomplete_line_begin: {num_incomplete_line_begin}\")\n",
"print(f\"num_incomplete_line_middle: {num_incomplete_line_middle}\")\n",
"print(f\"num_incomplete_line_end: {num_incomplete_line_end}\")\n",
"print(f\"{num_property_assignment = }\")\n",
"print(f\"{num_variable_assignment = }\")\n",
"print(f\"{num_element = }\")\n",
"print(f\"{num_line = }\")\n",
"print(f\"{num_incomplete_line_begin = }\")\n",
"print(f\"{num_incomplete_line_middle = }\")\n",
"print(f\"{num_incomplete_line_end = }\")\n",
"print(f\"{num_continued_expression = }\")\n",
"print(\"######################################\")"
]
},
{
"cell_type": "code",
"execution_count": 28,
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'ssp1h: pipe, l = 0.05, type =\"@1,1.38s3.00\", descrip = \"deferred sextupole\"'"
"'dbsy52d[l]'"
]
},
"execution_count": 28,
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
Expand All @@ -227,22 +236,23 @@
},
{
"cell_type": "code",
"execution_count": 29,
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<re.Match object; span=(0, 32), match='ssp1h: pipe, l = 0.05, type =\"@1'>"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
"ename": "AttributeError",
"evalue": "'NoneType' object has no attribute 'group'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[52], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m re\u001b[39m.\u001b[39;49mmatch(coninued_expression_pattern, line)\u001b[39m.\u001b[39;49mgroup(\u001b[39m0\u001b[39m)\n",
"\u001b[0;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'group'"
]
}
],
"source": [
"re.match(element_pattern, line)"
"re.match(coninued_expression_pattern, line).group(0)"
]
},
{
Expand Down

0 comments on commit d1910b3

Please sign in to comment.