[Filter] Fully enable regex matching

This commit is contained in:
Matt Nadareski
2017-02-08 20:51:05 -08:00
parent 6edaf6e709
commit e8bcad896e
3 changed files with 6 additions and 18 deletions

View File

@@ -469,19 +469,15 @@ namespace SabreTools.Helper.Dats
/// <param name="haystack">List to search for the value in</param>
/// <param name="needle">Value to search the list for</param>
/// <returns>True if the value could be found, false otherwise</returns>
/// <remarks>TODO: Add proper regex matching to all strings</remarks>
private bool FindValueInList(List<string> haystack, string needle, bool regex = false)
private bool FindValueInList(List<string> haystack, string needle)
{
bool found = false;
foreach (string straw in haystack)
{
if (!String.IsNullOrEmpty(straw))
{
// Pre-process the straw to make it regex-compatibile
string regexStraw = (!regex ? "^" + (straw.StartsWith("*") ? ".*" : "") + Regex.Escape(straw.Trim('*')) + (straw.EndsWith("*") ? ".*" : "") + "$" : straw);
// Check if a match is found with the regex
found |= Regex.IsMatch(needle, regexStraw, RegexOptions.IgnoreCase);
found |= Regex.IsMatch(needle, straw, RegexOptions.IgnoreCase);
}
}

View File

@@ -955,13 +955,9 @@ Options:
-nmd5=, --not-md5= Exclude by MD5 hash
-sha1=, --sha1= Filter by SHA-1 hash
-nsha1=, --not-sha1= Exclude by SHA-1 hash
For each of the flags above, the user can specify either an exact match or can use a
wildcard as defined below (case-insensitive):
*00 means ends with '00'
00* means starts with '00'
*00* means contains '00'
00 means exactly equals '00'
Multiples of each of the above inputs are allowed.
For each of the flags above, the user can specify either an exact match or can use
full C#-style regex for pattern matching. Multiples of each of the above inputs are
allowed.
-ofg, --of-as-game Allow cloneof and romof tags to match game name filters
If filter or exclude by game name is used, this flag will allow those filters to

View File

@@ -647,11 +647,7 @@ namespace SabreTools
"",
"Filter parameters game name, rom name, CRC, MD5, SHA-1 can",
"do partial matches using asterisks as follows (case insensitive):",
" *00 means ends with '00'",
" 00* means starts with '00'",
" *00* means contains '00'",
" 00 means exactly equals '00'",
"be matched using full C#-style regex.",
"",
"Filter parameters for size can use postfixes for inputs:",