Jump to content
Tosyk

Make a metasymbol condition to make operations over the text file line

Recommended Posts

Hi,

Please help me to change metasymbol line. Right now I have this condition code:

If StringInStr($_sName, 'TEXT ') Then
    $_sName = StringRegExpReplace($_sName, '(^.*)\TEXT (.*)$', '$2')
    $_sName = StringRegExpReplace($_sName, '(^.*)\ (.*)$', '$1')
    If Not CheckIsSave_($_sName) Then

It work fine with this text file and finds each line which start from 'TEXT':

Material B7E671143D244B
====================================
TEXT 2F3139D816C34D 1
TEXT B6A968EF2505A2 1
TEXT 35206697A04F91 1
TEXT EB485AF490D83D 1
TEXT 0DAB42294BD9B3 1
TEXT 3D6525BEE360E1 0

Material D6906B886B06E3
====================================
TEXT 0CCECCCCFB62AE 1
TEXT 1E14CB29AB43F0 1
TEXT FB7F0DCE9B5950 1

But I have a new text file now the lines of which now are start with 0:, 1: and so on:

sm_0
---------------
0: dummy_gray
1: c_com_socksa_mt
2: c_com_socksa_tn
3: dummy_white
4: default_z
5: dummy_nmap
6: ---
7: ---

sm_1
---------------
0: c_com_prisoner_shoes_di
1: c_com_prisoner_shoes_mt
2: c_com_prisoner_shoes_tn
3: dummy_white
4: default_z
5: c_com_leatherb_rt
6: ---
7: ---

how to change (or add) the condition code above to work with new text file?

I'm trying to change this script: http://autoit-script.ru/threads/poisk-fajlov-rekursivno-po-dannomu-spisku.26970/post-148646

 

Share this post


Link to post
Share on other sites

in other words:

TEXT 2F3139D816C34D 1 = ($_sName, '(^.*)\TEXT (.*)$', '$2')
0: c_com_prisoner_shoes_di = ?

I need know what is under the question mark
 

 

Share this post


Link to post
Share on other sites
$_sName = 'TEXT 2F3139D816C34D 1'
If StringInStr($_sName, 'TEXT ', 1) Then
    $_sName = StringRegExpReplace($_sName, '(^.*)\TEXT (.*)$', '$2')
    $_sName = StringRegExpReplace($_sName, '(^.*)\ (.*)$', '$1')
    ConsoleWrite($_sName & @CRLF)
EndIf

$_sName = '2: c_com_socksa_tn'
If StringInStr($_sName, ': ', 1) Then
    $_sName = StringRegExpReplace($_sName, '(^.*)\d: (.*)$', '$2')
    ConsoleWrite($_sName & @CRLF)
EndIf

 

Share this post


Link to post
Share on other sites

Another example.

#cs ; --------- Test Data ----------
Material B7E671143D244B
====================================
TEXT 2F3139D816C34D 1
TEXT B6A968EF2505A2 1
TEXT 35206697A04F91 1
TEXT EB485AF490D83D 1
TEXT 0DAB42294BD9B3 1
TEXT 3D6525BEE360E1 0

Material D6906B886B06E3
====================================
TEXT 0CCECCCCFB62AE 1
TEXT 1E14CB29AB43F0 1
TEXT FB7F0DCE9B5950 1

But I have a new text file now the lines of which now are start with 0:, 1: and so on:

sm_0
---------------
0: dummy_gray
1: c_com_socksa_mt
2: c_com_socksa_tn
3: dummy_white
4: default_z
5: dummy_nmap
6: ---
7: ---

sm_1
---------------
0: c_com_prisoner_shoes_di
1: c_com_prisoner_shoes_mt
2: c_com_prisoner_shoes_tn
3: dummy_white
4: default_z
5: c_com_leatherb_rt
6: ---
7: ---
#ce ; ----- End of Test Data ----------

#include <Array.au3>

$_aName = StringRegExpReplace(FileRead(@ScriptFullPath), '(?is)(^.*#cs[^\R]*\R)|(\R#ce.*$)', "") ; Extract test data from script.
;ConsoleWrite( $_aName& @CRLF)

$_aName = StringRegExp($_aName, '(?m)^(?:TEXT|\d+:\h)(.*$)', 3) ; Extract required text from test data. (Lines starting with "TEXT ", or, digits with a ": ".

ConsoleWrite(_ArrayToString($_aName, @CRLF) & @CRLF)
_ArrayDisplay($_aName)

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By seadoggie01
      I'm trying to capture everything after a "#ToDo" in my scripts. I got that like this:
      (?i)[^\v]*#todo(.*) But then I thought it would be nice to use underscores to continue the ToDo... kind of like this:
      #ToDo: This is a really long explanation about something _ # that is very in-depth and needs to take up a lot of _ # space in a ToDo comment Global $variables = "Bad" I can't seem to capture everything... and maybe I'm trying to do too much with Regex... I keep trying variations of this:
      Condensed Version: (?im)[^\v]*#todo(?:([^\v]*)_\s*)*#([^\v]*) Expanded with comments (?ixm)(?# Ignore case, ignore newlines in Regex, use multiline option)# [^\v]*(?# Match leading space/s)# \#todo(?# Match the #todo)# (?:([^\v]*)_\s*)*(?# Match lines ending with _)# \#([^\v]*)(?# Last line only, no _'s)# I never seem to be able to build an array well with Regex... I saw something once about not being able to capture repeated patterns, and I think that's my issue
    • By genius257
      Inspired by PHP's preg_split.
      Split string by a regular expression.
      Also supports the same flags as the PHP equivalent.
      v1.0.1
       
      Example:
      #include "StringRegExpSplit.au3" StringRegExpSplit('splitCamelCaseWords', '(?<=\w)(?=[A-Z])') ; ['split', 'Camel', 'Case', 'Words']  
    • By RAMzor
      Hi guys I need your help.
      I have string like this : "TDM111A5,      RCT222Y5/ 7  ; FDT444E4 /8 , ABC222R5"
      I need find a coma or semicolon and delete white spaces before and after them
      The output should be a string and/or array 
      String : "TDM111A5,RCT222Y5/ 7;FDT444E4 /8,ABC222R5"
      Array:
      TDM111A5
      RCT222Y5/ 7
      FDT444E4 /8
      ABC222R5
    • By BlueBandana
      Is there a way to output the regex matches into a file?
      I have a script to compare two files and check for regex matches.
      I want to output the matching regex of 'testexample.txt' to another file.
      #include <MsgBoxConstants.au3> #include <Array.au3> $Read = FileReadToArray("C:\Users\admin\Documents\testexample.txt") $Dictionary = FileReadToArray("C:\Users\admin\Documents\example.txt") For $p = 0 To UBound($Dictionary) - 1 Step 1 $pattern = $Dictionary[$p] For $i = 0 To UBound($Read) - 1 Step 1 $regex = $Read[$i] If StringRegExp($regex, $pattern, 0) Then MsgBox(0, "ResultsPass", "The string is in the file, highlighted strings: " ) Else MsgBox(0, "ResultsFail", "The string isn't in the file.") EndIf Next Next  
    • By junichironakashima
      Im creating a code that will work in this sequence:
      1. Copy the text (question) in one atea of the screen
      2. Catch the 2 strings (number)
      3. Multiply the 2 strings ( $1*$2)
      4. Click the next area to put the answer
      5. Paste the answer
       
      This is my code
       
      MouseClick($MOUSE_CLICK_LEFT, 479, 802, 3, 1) ;Clicking all of the text
      Send("^c") 
      $x = StringRegExpReplace(ClipGet(), 'What is (\d*) x (\d*) \?$', "$1*$2")
      MouseClick($MOUSE_CLICK_LEFT, 480, 844, 1, 1)
      ClipPut($x)
      Send("^v")
       
      However the output is this
      $1*$2
       
      How can I make it solve itself? Because I tried this code:
      MouseClick($MOUSE_CLICK_LEFT, 479, 802, 3, 1) ;Clicking all of the text
      Send("^c")
      MouseClick($MOUSE_CLICK_LEFT, 480, 844, 1, 1) $x = Execute(StringRegExpReplace(ClipGet(), 'What is (\d*) x (\d*) \?$', "$1*$2"))
      ClipPut($x)
      Send("^v")
      Output is just blank text

×
×
  • Create New...