Commit 2406bdc2 authored by Mygod's avatar Mygod

Use noncapturing group (?:^|\.)

parent 377d2ee4
...@@ -99,7 +99,7 @@ def generate_acl(domains): ...@@ -99,7 +99,7 @@ def generate_acl(domains):
ip_content += (domain + "\n") ip_content += (domain + "\n")
except socket.error: except socket.error:
domain = domain.replace('.', '\.') domain = domain.replace('.', '\.')
proxy_content += ('(^|\.)' + domain + '$\n') proxy_content += ('(?:^|\.)' + domain + '$\n')
proxy_content = header + ip_content + proxy_content proxy_content = header + ip_content + proxy_content
......
...@@ -28,7 +28,7 @@ class AclTest { ...@@ -28,7 +28,7 @@ class AclTest {
private const val INPUT1 = """[proxy_all] private const val INPUT1 = """[proxy_all]
[bypass_list] [bypass_list]
1.0.1.0/24 1.0.1.0/24
(^|\.)4tern\.com${'$'} (?:^|\.)4tern\.com${'$'}
""" """
} }
......
This diff is collapsed.
This diff is collapsed.
...@@ -72,8 +72,9 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener, ...@@ -72,8 +72,9 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener,
private const val SELECTED_HOSTNAMES = "com.github.shadowsocks.acl.CustomRulesFragment.SELECTED_HOSTNAMES" private const val SELECTED_HOSTNAMES = "com.github.shadowsocks.acl.CustomRulesFragment.SELECTED_HOSTNAMES"
private const val SELECTED_URLS = "com.github.shadowsocks.acl.CustomRulesFragment.SELECTED_URLS" private const val SELECTED_URLS = "com.github.shadowsocks.acl.CustomRulesFragment.SELECTED_URLS"
// unescaped: (?<=^(\(\^\|\\\.\)|\^\(\.\*\\\.\)\?)).*(?=\$$) // unescaped lol: (?<=^(?:\(\^\|\\\.\)|\^\(\.\*\\\.\)\?|\(\?:\^\|\\\.\))).*(?=\$$)
private val domainPattern = "(?<=^(\\(\\^\\|\\\\\\.\\)|\\^\\(\\.\\*\\\\\\.\\)\\?)).*(?=\\\$\$)".toRegex() private val domainPattern =
"(?<=^(?:\\(\\^\\|\\\\\\.\\)|\\^\\(\\.\\*\\\\\\.\\)\\?|\\(\\?:\\^\\|\\\\\\.\\))).*(?=\\\$\$)".toRegex()
@Suppress("FunctionName") @Suppress("FunctionName")
private fun AclItem(item: Any) = when (item) { private fun AclItem(item: Any) = when (item) {
...@@ -179,7 +180,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener, ...@@ -179,7 +180,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener,
when (Template.values()[templateSelector.selectedItemPosition]) { when (Template.values()[templateSelector.selectedItemPosition]) {
Template.Generic -> AclItem(text) Template.Generic -> AclItem(text)
Template.Domain -> AclItem(IDN.toASCII(text, IDN.ALLOW_UNASSIGNED or IDN.USE_STD3_ASCII_RULES) Template.Domain -> AclItem(IDN.toASCII(text, IDN.ALLOW_UNASSIGNED or IDN.USE_STD3_ASCII_RULES)
.replace(".", "\\.").let { "(^|\\.)$it\$" }) .replace(".", "\\.").let { "(?:^|\\.)$it\$" })
Template.Url -> AclItem(text, true) Template.Url -> AclItem(text, true)
} }
}, arg) }, arg)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment